最近想好好认真学习一下opencv4.0,需要用到contrib扩展库,配置完记录下。 先写一下版本信息:opencv4.0.1,vs2017和 win10。
大家第一次安装opencv的时候一定要一定要一定要认真看一遍教程,很多错误是自己不认真仔细导致的,特别看安装过程的注意事项,等一定了解和熟练后再总结一套自己的教程,这样对自己以后安装东西有很大的帮助
本人github
cmake、vs2017、opencv4.0.1、opencv_contrib-4.0.1
官方地址https://cmake.org/download/
下载安装cmake-3.13.2-win64-x64.msi,默认安装。
这里直接在微软官网下载即可。链接: https://visualstudio.microsoft.com/zh-hans/.
其中三个版本都可以选,Community 2017是免费社区版本,Professional 2017和Enterprise 2017是付费版,功能好像没有区别,我这里选择的是Professional版本。
付费版可以使用密匙激活,这里提供两个密匙,如果不能用了就网上找,很多的:
Professional 2017:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
Enterprise 2017:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF
1、下载链接: https://github.com/opencv/opencv_contrib/releases.
2、选择你的opencv对应的contrib版本,例如我装的是opencv4.0.1,对应就下载opencv_contrib-4.0.1.zip。下载完成之后直接解压即可,留着cmake使用。
opencv_contrib-4.0.1.zip解压完如下图:
1、Opencv官网:https://opencv.org/releases.html
2、提取过程如下:
windows安装opencv4.1.1过程中ffmpeg、ippicv、face_landmark_model下载不下来解决办法
1、打开CMake,下图第一个红框输入Opencv(我的是opencv4.0.1)的sources目录(注意:不是opencv_contrib的目录,原来自己opencv的目录);第一个红框输入你自定义的输出目录。最后点左下角的Configure
2、点击完 Configure后会出现下图提示,点击确认后就ok了
3、然后选择对应vs的版本,64位系统选择Win64,默认的是Win32。
4、然后就是等待了。之后显示Configuring done第一次源码配置就完成了(完成后列表不出现红色)。
5、要是如上述红色,需要再次单击 Configure直到不出现红色为止则完成。
6、完成上述后找到OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的opencv_contrib中的modules目录,其中要把OPENCV_ENABLE_NONFREE(下图红框上面一行)选上,最后点击Generate开始编译。
注意路径不要复制,需要通过cmake来选择路径!
7、完成后左下角显示Configuring done,Generating done。
8、完成之后如果在你的输出文件夹中找到OpenCV.sln文件,即表明编译成功完成。
1、使用VS2017打开刚刚的“OpenCV.sln”文件,会反应一段时间如下图所示:
2、然后如图所示点击“生成—>重新生成解决方案”,这得等一段时间
3、完成后,如下图所示:
4、“解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL(B)”然后又是等好一会儿
完成后
5、最后到自定义的文件夹确认一下,找到install文件夹,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv4.0时的build文件夹一样):
1、打开VS2017新建一个空项目
输入名字,选择生成文件夹,然后选择“空项目”,直接确定就可以了。
确定之后就直接进到这个界面,先将Debug的X86改成X64,Opencv4.0官方不提供X86的了,如果需要应该可以自己cmake一下(没试过,不负责任的乱说的)。
然后找到属性管理器 ,如下图所示:
创建属性表,如下图所示
将属性表进行命名,根据你容易记住的命名风格来。
打开刚才建好的属性表
2、include目录
双击属性表,在通用属性—>VC++目录—>包含目录中添加:
D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\include
D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\include\opencv2
根据你的路径进行修改
没有了以前的“…opencv4.0\build\include\opencv”这一条。
3、然后是添加lib目录,在通用属性—>VC++目录—>库目录中添加:
4、在通用属性—>链接器—>输入—>附加的依赖项中添加:
opencv_aruco401d.lib
opencv_bgsegm401d.lib
opencv_bioinspired401d.lib
opencv_calib3d401d.lib
opencv_ccalib401d.lib
opencv_core401d.lib
opencv_datasets401d.lib
opencv_dnn401d.lib
opencv_dnn_objdetect401d.lib
opencv_dpm401d.lib
opencv_face401d.lib
opencv_features2d401d.lib
opencv_flann401d.lib
opencv_fuzzy401d.lib
opencv_gapi401d.lib
opencv_hdf401d.lib
opencv_hfs401d.lib
opencv_highgui401d.lib
opencv_imgcodecs401d.lib
opencv_imgproc401d.lib
opencv_img_hash401d.lib
opencv_line_descriptor401d.lib
opencv_ml401d.lib
opencv_objdetect401d.lib
opencv_optflow401d.lib
opencv_phase_unwrapping401d.lib
opencv_photo401d.lib
opencv_plot401d.lib
opencv_reg401d.lib
opencv_rgbd401d.lib
opencv_saliency401d.lib
opencv_shape401d.lib
opencv_stereo401d.lib
opencv_stitching401d.lib
opencv_structured_light401d.lib
opencv_superres401d.lib
opencv_surface_matching401d.lib
opencv_text401d.lib
opencv_tracking401d.lib
opencv_video401d.lib
opencv_videoio401d.lib
opencv_videostab401d.lib
opencv_xfeatures2d401d.lib
opencv_ximgproc401d.lib
opencv_xobjdetect401d.lib
opencv_xphoto401d.lib
opencv_aruco401d.lib
opencv_bgsegm401d.lib
opencv_bioinspired401d.lib
opencv_calib3d401d.lib
opencv_ccalib401d.lib
opencv_core401d.lib
opencv_datasets401d.lib
opencv_dnn401d.lib
opencv_dnn_objdetect401d.lib
opencv_dpm401d.lib
opencv_face401d.lib
opencv_features2d401d.lib
opencv_flann401d.lib
opencv_fuzzy401d.lib
opencv_gapi401d.lib
opencv_hdf401d.lib
opencv_hfs401d.lib
opencv_highgui401d.lib
opencv_imgcodecs401d.lib
opencv_imgproc401d.lib
opencv_img_hash401d.lib
opencv_line_descriptor401d.lib
opencv_ml401d.lib
opencv_objdetect401d.lib
opencv_optflow401d.lib
opencv_phase_unwrapping401d.lib
opencv_photo401d.lib
opencv_plot401d.lib
opencv_reg401d.lib
opencv_rgbd401d.lib
opencv_saliency401d.lib
opencv_shape401d.lib
opencv_stereo401d.lib
opencv_stitching401d.lib
opencv_structured_light401d.lib
opencv_superres401d.lib
opencv_surface_matching401d.lib
opencv_text401d.lib
opencv_tracking401d.lib
opencv_video401d.lib
opencv_videoio401d.lib
opencv_videostab401d.lib
opencv_xfeatures2d401d.lib
opencv_ximgproc401d.lib
opencv_xobjdetect401d.lib
opencv_xphoto401d.lib
其他版本按照自己的版本号更改数字“401d”为自己对应的版本即可(401d意为4.0.1版本的debug模式)。
如果你的版本号和我不一样,可以参考我这篇博客最后面使用cmd命令得到文件夹中所有文件名的方法:
链接: https://blog.csdn.net/weixin_41991128/article/details/83864713.
5、获取自己的链接库列表:
win+r调出“运行”窗口并输出cmd
输入:cd /d D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\x64\vc15\lib 回车 (填自己的路径)
输入:dir /b *.lib *>0.txt 回车
这时打开你对应路径的目录,多了一个0.txt文件,里面存了你这个文件夹里所有链接库名字。
注意:记得把0.txt删掉否则对后面有影响,而且0.txt文件里多了0.txt、OpenCVConfig.cmake、OpenCVConfig-version.cmake、OpenCVModules.cmake、OpenCVModules-debug.cmake,复制的时候记得删掉这些多余的内容。
验证代码如下:
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat box = imread("1.jpg");
Mat box_in_sence = imread("2.jpg");
// 创建AKAZE
auto akaze_detector = AKAZE::create();
vector kpts_01, kpts_02;
Mat descriptors1, descriptors2;
akaze_detector->detectAndCompute(box, Mat(), kpts_01, descriptors1);
akaze_detector->detectAndCompute(box_in_sence, Mat(), kpts_02, descriptors2);
// 定义描述子匹配 - 暴力匹配
Ptr matcher = DescriptorMatcher::create(DescriptorMatcher::BRUTEFORCE);
std::vector< DMatch > matches;
matcher->match(descriptors1, descriptors2, matches);
// 绘制匹配
Mat img_matches;
drawMatches(box, kpts_01, box_in_sence, kpts_02, matches, img_matches);
imshow("AKAZE-Matches", img_matches);
imwrite("D:/result.png", img_matches);
waitKey(0);
return 0;
}
结果图:
代码我已经上传到百度云了
链接:https://pan.baidu.com/s/14Qp_moTk-7XUscftKYHQRQ
提取码:67rk
参考:
https://blog.csdn.net/weixin_41991128/article/details/83656543
https://blog.csdn.net/qq_38629044/article/details/85936014
https://blog.csdn.net/weixin_41991128/article/details/84593477