前期准备:
vs2017(企业版或专业版)、opencv4.5.4和opencv_contrib-4.5.4源码、cmake14.X、python3.8
一、安装cmake
官方地址https://cmake.org/download/
最新版本:
旧版本(我下载的):
https://github.com/Kitware/CMake/releases
进入github,点击tags,找到版本14.X进行下载
二、安装vs2017
这里直接在微软官网下载即可。链接: https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes
中三个版本都可以选,Community 2017是免费社区版本,Professional 2017和Enterprise 2017是付费版,功能好像没有区别,我这里选择的是Professional版本。
付费版可以使用密匙激活,这里提供两个密匙,如果不能用了就网上找,很多的:
Professional 2017:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
Enterprise 2017:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF
三、opencv_contrib下载安装(要和opencv版本一致)
下载链接: https://github.com/opencv/opencv_contrib/releases.
四、提取opencv
https://github.com/opencv
进入opencv中进行对应版本下载
将下载好的opencv和opencv_contrib解压到D盘
五、 CMake 编译
windows安装opencv4.1.1过程中ffmpeg、ippicv、face_landmark_model下载出错解决办法:https://blog.csdn.net/fengxinzioo/article/details/104919888
1、打开CMake,下图第一个红框输入Opencv(我的是opencv4.0.1)的sources目录(注意:不是opencv_contrib的目录,原来自己opencv的目录);第一个红框输入你自定义的输出目录。最后点左下角的Configure
2、点击完 Configure后会出现下图提示,点击确认后就ok了
3、然后选择对应vs的版本,64位系统选择Win64,默认的是Win32。
5、要是如上述红色,需要再次单击 Configure直到不出现红色为止则完成。
6、完成上述后找到OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的opencv_contrib中的modules目录,其中要把OPENCV_ENABLE_NONFREE(下图红框上面一行)选上,最后点击Generate开始编译。
注意路径不要复制,需要通过cmake来选择路径!
7、完成后左下角显示Configuring done,Generating done。
注意:如果遇到找不到cuda时,更换cmake版本试一下
六、 VS2017 编译
完成之后如果在你的输出文件夹中找到OpenCV.sln文件,即表明编译成功完成。 .
1、使用VS2017打开刚刚的“OpenCV.sln”文件,会反应一段时间如下图所示:
3、完成后,如下图所示:
4、“解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL(B)”然后又是等好一会儿
5、最后到自定义的文件夹确认一下,找到install文件夹,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv4.0时的build文件夹一样):
七、 环境配置
1、 环境变量配置
右键电脑【属性】
【高级系统设置】
【环境变量】
【系统变量】【Path】
编译目录“ D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\x64\vc15\bin” 的完整路径 (如下图),根据你自己Cmake时的路径进行修改。
环境变量配置好后,一定要重启系统!!!!
2、配置相关目录
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、获取自己的链接库列表:
`
``cpp
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 <opencv2/opencv.hpp>
#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<KeyPoint> 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<DescriptorMatcher> 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;
}
Win10 + Microsoft Visual Studio Community 2017 + CUDA11.3 + CUDNN8.2 + RTX GeForce 3090 + OpenCV4.5.3
参考:
https://blog.csdn.net/qq_39567427/article/details/126230952
参考:
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
https://blog.csdn.net/fengxinzioo/article/details/88767399
————————————————