Let’s say you want to compile and run the face detection sample code that comes with the OpenCV. This code is located at
OpenCV 2.4.x : /path/to/opencv/samples/c/facedetect.cpp
OpenCV 3 : /path/to/opencv/samples/cpp/facedetect.cpp
Compiling the sample code is super easy using pkg-config. Try this on the command line
1 | pkg-config --cflags --libs opencv |
If you have multiple versions of opencv installed, you can provide the path to the opencv.pc file.
1 | pkg-config --cflags --libs /path/to/opencv .pc |
The above command lists all the paths to header files and libraries for OpenCV. The instructions below show how to use pkg-config with g++ to compile OpenCV sample code.
Compile and run OpenCV code from the command line on Linux
1 2 3 4 5 6 7 8 | # For OpenCV 2.4.x cd /path/to/opencv/samples/c/ # For OpenCV 3 cd /path/to/opencv/samples/cpp/ #Compile g++ -ggdb facedetect.cpp -o facedetect `pkg-config --cflags --libs opencv` #run . /facedetect |
Compile and run OpenCV code from the command line on Mac OSX
1 2 3 4 5 6 7 8 9 10 11 12 13 | # For OpenCV 2.4.x cd /path/to/opencv/samples/c/ # For OpenCV 3 cd /path/to/opencv/samples/cpp/ #Compile g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect # For OpenCV 3 installed using Homebrew provide the full # path to opencv.pc file g++ -ggdb `pkg-config --cflags --libs /usr/local/Cellar/opencv3/3 .1.0_3 /lib/pkgconfig/opencv .pc` facedetect.cpp -o facedetect #run . /facedetect |
Mac OSX 10.9 and above
If you had compiled OpenCV with libstdc++ you will get the following error.
1 | Undefined symbols for architecture x86_64: |
This happens because on OSX 10.9 and above, the compiler links to libc++ by default. You can fix the problem by simply instructing the compiler to use libstdc++ instead —
1 | g++ -ggdb `pkg-config --cflags --libs opencv` -stdlib=libstdc++ facedetect.cpp -o facedetect |