Monday, November 2, 2009

Using OpenCV with MacOS 10.6 Snow Leopard - Part II

Since I found out, that it is quite unintuitive to work with the OpenCV framework created with the script i introduced in my first post, I'll show you how to compile OpenCV 2.0 using CMake and ffmpeg for video in- and output.

I recently tested the video capability with mit Logitech QuickCam Communicate STX using the "macam" drivers. It worked like charm, but I didn't get a good framerate - but this should be a camera problem!
 
1. GET OPENCV SOURCES 

So then let's start. The first thing we need are the OpenCV source files. Just follow the previous guide and use a svn client to get the actual data.

>> svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk'


2. INSTALL FFMPEG

We also have to install the "ffmepg" which is done by using the macports. Just type

>> sudo port -v install ffmpeg

This should take a while. Meanwhile you can get acquainted with CMake. So now we have to solve a little problem. Since OpenCV tries to find the ffmpeg header files only in "/opt/local/include" we will have to copy them there to make sure that the CMake-Script will find them. I know that isn't the cleanest solution, but I couldn't think of something more "advanced", so if you have another solution feel free to post it.

So to get everything to work just search for the folders
  • libavcodec
  • libavdevice
  • libavfilter
  • libavformat
  • libavutil
Copy them to the include folder and go on with the next steps.

3. INSTALL CMAKE 

Next thing we have to do is get a copy of CMake. You can get the newest release on the projekt hompage "http://www.cmake.org/". Install it and Open the CMake-GUI.

Start the application and ook for the "Where is the source code"-line and browse to the OpenCV folder where your svn client put the data. In the following I'll call this directory OPENCV_DIR. Create a folder, say "_make" in the OPENCV_DIR and put the path into "Where to build the binaries"-line in CMake. Now hit the "Configure"-button and CMake will ask you which compiler you want to use. Just use the default one which should be XCode, if you have installed the IDE already. After configuring you will see a reed colored window with many compile-options.

In the text output you should find entries that tell you, that "libavformat - found" and and the result tabular in the ffmpeg-section should be a line that says "gentoo-style:     1". If this is the case everything worked out just fine and we can go on to configure OpenCV.

4. COFIGURING OPENCV USING CMAKE
This is something individual, but my settings should work for most of you out there - everyone who need a different setting should know what to do when reading the parameter list. So do the following:
 
Uncheck:
  • BUILD_EXAMPLES
  • BUILD_TEST
This should do the trick. Just hit "Configure" again, and everything should get white and the "Generate" button will appear. Hit it and wait. In the OPENCV_DIR/_make/ folder you should now find an XCode-Project file which you can double-click. Just compile it in Release and/or Debug-Mode. The libs will be located in  OPENCV_DIR/_make/lib/. You will have to add them to the XCode library path or copy them into the project by drag-dropping them into the Project window (worked like charm) for me.

Make sure you are in the debug mode and compile your OpenCV programm. The debug mode will work out just fine. I haven't had luck with the release mode though - XCode doesn't seem to find the libraries anymore and I have absolutely no clue why...