Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Opencv path for a c++ project using Cmake

Tags:

opencv

cmake

I have two Opencvs, opencv-2.4.10 is installed in /usr and opencv-3.1 is installed in /usr/local. I can set the opencv path in Eclipse easily. In cmake, how can I set the path for one of the opencvs I like to use for that project? Thanks

like image 419
batuman Avatar asked May 20 '16 01:05

batuman


3 Answers

This question is a duplicate of How to force c++ compiler use one of different installed package's versions, using CMake? but it is found by search engines so I add the answer from texasflood that I found to be working with CMake 2.8.12.2 and OpenCV 3.2.0 on Ubuntu 12.4:

Simply change the find_package command:

find_package(OpenCV REQUIRED PATHS "/usr/opencv-2.4.10")
like image 127
Gabriel Devillers Avatar answered Oct 24 '22 07:10

Gabriel Devillers


None of the other answers worked for me (linux, opencv 4.0.0, haven't tested yet with opencv 3.x.x).

Adding the following before the line find_package(...) in the CMakeLists.txt worked:

set(OpenCV_DIR /path/to/opencv_install_dir/lib/cmake/opencv4)

If opencv was compiled from source with a none standard installation target directory, then /path/to/opencv_install_dir is (should be) known, otherwise search for the location of the directory structure lib/cmake/opencv*.

like image 6
calocedrus Avatar answered Oct 24 '22 09:10

calocedrus


I don't have a Linux machine to test it on but this is how I do it on Windows 10 64bit.

I only added a line in the CmakeLists.txt in my program to set the variable OpenCV_DIR used by CMake.

For example, if OpenCV is installed in C:/opencv, I add

SET("OpenCV_DIR" "C:/opencv")

in my CMakeLists.txt.

In your case, it should be something like

SET("OpenCV_DIR" "/usr/opencv-2.4.10")

But, as I said, I never tested this on Linux.

like image 4
Sunreef Avatar answered Oct 24 '22 07:10

Sunreef