Compiling OpenCV 2.4 on RHEL/CentOS 5

OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.

At present, prebuilt binaries/packages are not available for OpenCV on Centos/RHEL 5. Here are the notes from my attempts to get it compiled.

Please make sure you have latest cmake installed from

To Install OpenCV python modules, you will need python-numpy modules to be installed.

easy_install numpy

Then compile OpenCV using(assuming, your latest python is installed in /usr/local/python-2.7):

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DPYTHON_EXECUTABLE=/usr/local/python-2.7/bin/python -DPYTHON_INCLUDE_DIR=/usr/local/python-2.7/include -DPYTHON_LIBRARY=/usr/local/python-2.7/lib/ -DPYTHON_NUMPY_INCLUDE_DIR=/usr/local/python-2.7/lib/python2.7/site-packages/numpy/core/include/ -DPYTHON_PACKAGES_PATH=/usr/local/python-2.7/lib/python2.7/site-packages/

Using BUILD_NEW_PYTHON_SUPPORT fixes the issue seen below:

CMake Warning:
   Manually-specified variables were not used by the project:


If you get the following Error:

CMake Error at apps/haartraining/CMakeLists.txt:39 (set_target_properties):
set_target_properties called with incorrect number of arguments.

CMake Error at apps/traincascade/CMakeLists.txt:29 (set_target_properties):
set_target_properties called with incorrect number of arguments.

it can be fixed in both files by enclosing ${EXECUTABLE_OUTPUT_PATH} with double quotes (“${EXECUTABLE_OUTPUT_PATH}”)

Then, run make


Now, make will throw an error when it tries to compile freak.cpp. To get this compiled, compile it manually (without using any optimization )

cd /home/ram/OpenCV-2.4.3/modules/features2d ; 
/usr/bin/c++ -Dopencv_features2d_EXPORTS -DHAVE_CVCONFIG_H \ 
-DCVAPI_EXPORTS -W -Wall -Wformat -Wundef -Winit-self \
-Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option \
-Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 \
-ffunction-sections -DNDEBUG -DNDEBUG -fPIC \
-I/home/ram/OpenCV-2.4.3/modules/features2d/perf -I/home/ram/OpenCV-2.4.3/modules/features2d/include \
-I/home/ram/OpenCV-2.4.3/modules/highgui/include -I/home/ram/OpenCV-2.4.3/modules/flann/include \
-I/home/ram/OpenCV-2.4.3/modules/imgproc/include -I/home/ram/OpenCV-2.4.3/modules/core/include \
-I/home/ram/OpenCV-2.4.3/modules/ts/include -I/home/ram/OpenCV-2.4.3/modules/features2d \
-I/home/ram/OpenCV-2.4.3/modules/features2d/src -I/home/ram/OpenCV-2.4.3/modules/features2d/test \
-I/home/ram/OpenCV-2.4.3 -o CMakeFiles/opencv_features2d.dir/src/freak.cpp.o \
-c /home/ram/OpenCV-2.4.3/modules/features2d/src/freak.cpp

This should build freak manually, so make will not bother recompiling it anymore. Continue build:

cd /home/ram/OpenCV-2.4.3/
make install

This completes OpenCV installation. To build the samples:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
cd /home/ram/OpenCV-2.4.3/samples/c
chmod +x

5 thoughts on “Compiling OpenCV 2.4 on RHEL/CentOS 5”

  1. There are two errors in this posted approach:
    1. The include path has to include the root installation folder to include cvconfig.h.
    2. The path “CMakeFiles/opencv_features2d.dir/src/” doesn’t exist. It has to be modules/features2d/CMakeFiles/freak.cpp.o from the root path.

  2. Weird. The steps mentioned here are from my notes I copied from, when I did the installation. Let me redo and see if I encounter the issues you have mentioned.

  3. Sorry to correct previous post:
    The include path has to include the root installation folder to include cvconfig.h.
    e.g., -I/opencv-2.4.3

  4. Thanks for the tutorial. The installation finished but when I try to import cv2 in python I get the following error:
    ImportError: /opt/python2.7.5/lib/python2.7/site-packages/ undefined symbol: Py_InitModule4

    Any ideas?

  5. Run:
    ldd /opt/python2.7.5/lib/python2.7/site-packages/ and paste the output please

    I think the path somewhere is not set right

Leave a Reply

Your email address will not be published. Required fields are marked *