使用OpenCV中会遇到各种问题,在这里记录一下,避免大家重复解决时间
1.多版本opencv如何在程序中指定而不用安装或者删除原版本opencv
多个版本的opencv容易搞混,让大家觉得挺麻烦,想删除原版本opencv或升级,但这样不仅不操作困难,还很容易导致其他依赖opencv的package出现问题。
其实如果只是跑程序,让程序链接到指定版本就好了,比如:
修改CMakeLists.txt中opencv配置来链接到指定版本:
set(OpenCV_Prefix "/home/sph/Downloads/opencv/build_3_4_3")
set(OpenCV_DIR "${OpenCV_Prefix}")
set(OpenCV_INCLUDE_DIRS "${OpenCV_Prefix}/include")
set(OpenCV_LIBRARIES "${OpenCV_Prefix}/lib")
find_package(OpenCV 3 REQUIRED)
2.CMake Error
编译的时候遇到:
CMake Error in localization/localization/CMakeLists.txt:
Imported target "opencv_calib3d" includes non-existent path
"/home/sph/Downloads/opencv/build"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
CMake Error in localization/localization/CMakeLists.txt:
Imported target "opencv_calib3d" includes non-existent path
"/home/sph/Downloads/opencv/build"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
原因是编译完成OpenCV后,我直接复制了build到另一个文件夹,导致里面的编译链接不对,所以在编译前就固定文件夹路径,再编译。编译完成之后千万不用复制到另外路径再用,否则就会出现上面的问题!!!
还有可能是其他的project里面找到了其他版本的opencv导致的,找到其他用到opencv库的程序,统一指定路径就好了。