Getting OpenCV 2.3.1 to compile on Ubuntu can be interesting. The first issue is tracking down all of the dependencies you need to get the different parts of it to work properly. There is more information on dependencies needed at the OpenCV wiki here and here. I found this page on a blog as well which will help to get a lot of the dependencies down.
For me specifically, I had a couple of problems on 11.04. Make sure you have the following packages installed to enable gstreamer and unicap support:
libgstreamer-plugins-base0.10-dev
libgstreamer0.10-dev
libunicap2
libunicap2-dev
libucil2-dev
The second major problem is that OpenCV 2.3.1 doesn’t fully track the latest releases of ffmpeg. This patch helps, but bear in mind that it’s for OpenCV 2.3.0 and there have been changes between versions. You’ll have to install the patch by hand to take care of some of the differences.
Once this is done, you should be ready to build. On my system I ran cmake as:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_XINE=ON -D WITH_UNICAP=ON -D BUILD_EXAMPLES=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_DOCUMENTATION=ON -D BUILD_SHARED_LIBS=ON ..
If you have all of the extra media repositories on Ubuntu enabled, I’d highly recommend NOT disabling shared libraries when building OpenCV. You’ll avoid some linking errors due to concurrent versions of some of the multimedia libraries that might be installed.
After that, when you compile make sure you add in something like -I/usr/local/include and -L/usr/local/lib to your makefile to make sure you’re pulling in the version you just compiled instead of the default and you should be good to go.