学习OpenCV,用了比较新的4.1.0,发现很多demo无法使用是因为OpenCV的版本原因,很多变量也发生了变化,这里记录一下,防止再次吃苍蝇吧。
先说编译
网上有很多编译的方法,我使用的是QT+WIN7,采用CMAKE编译的时候各种编译不通过,百度和优快云上各种搜,简单总结一下比较容易的方法吧。
1、下载相同版本的OpenCV和contrib,否则编译真的会出问题
借鉴学习了用Qt Creator编译opencv并配置开发环境_qt creator opencv_林墨的博客-优快云博客
opencv和contrib的源码下载地址:
GitHub - opencv/opencv_contrib at 4.1.0
GitHub - opencv/opencv at 4.1.0
编译完成后的结果见:https://download.youkuaiyun.com/download/big_worm/11617044(分数是优快云自动添加的)
下载后解压到各自目录中备用,建议将解压后的目录放置在X:根下的非中文目录,防止踩坑,我的目录是D:\opencv410_qt
打开QT,按照打开项目——选择opencv目录下的CMakeLists.txt,QT自动解析——项目中修改CMAKE_INSTALL_PREFIX(安装目录)、IPP(不选择)、QT(选择)、WITH_OPENCL_D3D11_NV(不选择,编译到directx的时候会报错)、OPENCV_EXTRA_MODULES_PATH(设置其参数值为open_contrib源码包中的modles目录)
编译完成会提示
[ 99%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/main.cpp.obj
[ 99%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/parametersController.cpp.obj
[ 99%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/rotationConverters.cpp.obj
[ 99%] Linking CXX executable ..\..\bin\opencv_interactive-calibration.exe
[ 99%] Built target opencv_interactive-calibration
Scanning dependencies of target opencv_version
[ 99%] Building CXX object apps/version/CMakeFiles/opencv_version.dir/opencv_version.cpp.obj
[ 99%] Linking CXX executable ..\..\bin\opencv_version.exe
[ 99%] Built target opencv_version
Scanning dependencies of target opencv_version_win32
[ 99%] Building CXX object apps/version/CMakeFiles/opencv_version_win32.dir/opencv_version.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_version_win32.exe
[100%] Built target opencv_version_win32
Install the project...
-- Install configuration: "Release"
-- Up-to-date: D:/opencv410_qt/build64/etc/licenses/opencl-headers-LICENSE.txt
-- Installing: D:/opencv410_qt/build64/include/opencv2/cvconfig.h
-- Installing: D:/opencv410_qt/build64/include/opencv2/opencv_modules.hpp
----------------------------------------------------------------
另外一种编译,感觉比较不错,在QT中做好所有配置后,包括项目中修改CMAKE_INSTALL_PREFIX(安装目录)、IPP(不选择)、QT(选择)、WITH_OPENCL_D3D11_NV(不选择,编译到directx的时候会报错)、OPENCV_EXTRA_MODULES_PATH(设置其参数值为open_contrib源码包中的modles目录)、取消JAVA、python(因为用不上)
打开QT的MinGW控制台界面,就是CMD界面,进入opencv目录的build目录,直接mingw32-make -j 4,要是想稳定些的话,就别加-j 4参数了
出现问题解决记录:
boostdesc_bgm.i: No such file or directory
参考:https://blog.youkuaiyun.com/AlexWang30/articlboostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
拷贝到opencv_contrib/modules/xfeatures2d/src/目录下,而且网上直接可以用的资源并不多。所以本人在这篇文章里分享一下资源。
https://download.youkuaiyun.com/download/big_worm/12519481
test_descriptors_regression.impl.hpp: No such file or directory
features2d/test/test_detectors_regression.impl.hpp: No such file or directory
test_rotation_and_scale_invariance.cpp: No such file or directory
test_detectors_invariance.impl.hpp: No such file or directory
去opencv-4.1.1\modules\features2d\test目录下找到这两个文件,复制过去,修改对应的头文件路径,指向本地位置
。。。。反正缺了很多test...文件,复制过去,修改头文件即可