OpenCV Wiki

Contents

OpenCV (Open Source Computer Vision) is a library of programming functions for realtime computer vision. It uses a BSD license and hence it's free for both academic and commercial use. It has C++, C, Python and Java (Android) interfaces and supports Windows, Linux, Android, iOS and Mac OS. It has more than 2500 optimized algorithms. Adopted all around the world, OpenCV has more than 7 million downloads growing by nearly 200K/month. Usage ranges from interactive art, to mines inspection, stitching maps on the web on through advanced robotics.

GSoC 2014

Wiki for Google Summer of Code

Resources

General

Development

  • How to Contribute
  • Source Codes can be found at GitHub. The main OpenCV repository was converted to git and compactified. History now begins with the famous “atomic bomb” commit, that dates back to May the 11th, 2010.
    • To get the source code, point your git client to git://github.com/Itseez/opencv.git. Here are instructions.
      git clone git://github.com/Itseez/opencv.git
      
    • The rest of the history plus matches between git commits and SVN revisions are stored at a separate "OpenCV Attic" repository: git://code.opencv.org/opencv_attic.git.
    • Also OpenCV Extra was put to a separate repository: git://code.opencv.org/opencv_extra.git.
  • OpenCV Development Process

Issue Tracking

Please note that OpenCV project, as any open-source project, welcomes contributions from users. Either you have implemented some new functionality, or you're able to localize and fix a bug by yourself, please make a pull request at the GitHub. It will be automatically tested and reviewed by peers. Check your code for compliance with OpenCV Code Style Guide and please explain how your contribution might help others.

Creating new tickets

You first need to register at http://code.opencv.org. Then:
  • Click the Issues tab or the "Search" box to look for existing tickets - probably your problem is already known or even fixed in the OpenCV development branches. If that is the case, please comment the ticket with your "+1". It will help us to select hot issues for the next iteration.
  • If you can't find your problem on tracker, please click the New issue tab to create a new ticket.
    • Bug tracker (issue type) is used for bug reports. Please note, that OpenCV team is always busy with other urgent or high-priority issues, so you're invited to debug the issue by yourself.
    • Bugfix tracker is used in cases when you've debugged the issue. Congrats, you are the man! This is quite common when people contribute their patches for the open-source software. But please note, that if you really want to see your patch included to the library, better to work on a pull request. This will greatly simplify reviewing and testing process, see http://pullrequest.opencv.org.
    • Feature is used for feature requests. Please always provide motivation for your request. Even better, when you're ready to work on the task and just need some mentoring. In the latter case please inform us (in your ticket) that you're ready to help, and just need guidance.
    • Patch tracker should be used for contributions. But please prefer to make a pull request on the GitHub (as with the Bugfix tracker), so OpenCV developers may review and test submitted code.

Reporting bugs

  • First of all ask about the issue at the Q&A forum: http://answers.opencv.org. Then try to debug it in your own environment, because it may take forever to just reproduce the issue on other workstation. If you succeed, submit the fix as a pull request, and your fix may be included to the very next OpenCV release! But if you can't debug it, please do as follows...
  • Please, specify your platform (Windows 32/64bit, Linux x86/x64/ppc/..., MacOSX 32/64bit/ppc); compiler version; OpenCV version/revision; whether IPP, OpenMP, MMX, SSE ... have been enabled or not, and any other information that let us reproduce the environment, identify and localize the problem.
  • A sample code reproducing the problem helps us the most. It would really help if you could implement a unit-test that fails! Please check source:samples - for the preferred style (small code size, cross-platform). There is no need to provide any project files or makefiles, if it is a short single-file sample, we could build it and run in a minute. If we can reproduce the problem, we can fix it quickly.
  • If your application is complex, and the problem happens somewhere in the middle, often it is still possible to create a short standalone sample:
    • First, capture and store the data that you pass to the function using FileStorage.
    • Then copy the function call and put the corresponding reading from FileStorage in front of it.

Topic Pages