【前言】
很重要!!!
最近学到特征点检测,当用SIFT检测器的时候,才知道需要一个叫【opencv_contrib】的包,而且opencv_contrib的版本还要和OpenCV的版本相同。网上的安装方法也是各式各样,让我眼花缭乱(你是不是也是不知所云?不怕,谁让你遇到了我,哈哈~~)。经过对各种方法的尝试,历经九九八十一难,最终我成功了(鼓掌!)。根据我的理解,它的大致方法就是(快快竖起耳朵哦):用CMake对OpenCV进行编译,得到新的文件(Mybuild), Mybuild包含了原来OpenCV里面build的内容,然后把之前在配置环境变量以及在VS中配置OpenCV的包含目录、库目录、附加依赖的路径改成Mybuild里面对应的位置即可(以上仅代表个人拙见)。
搭建环境
- 软件版本:opencv_contrib-4.1.1、cmake-3.16.0、OpenCV-4.1.1、Visual Studio 2015
- 操作系统:Win10
关于仅仅OpenCV的安装请看这篇:【OpenCV】 OpenCV-4.1.1 + Visual Studio 2015 安装教程
1、准备工作
下载 OpenCV 和 opencv_contrib 的时候要注意版本匹配。
1.1 下载opencv_contrib-4.1.1
地址:https://github.com/opencv/opencv_contrib
选择你自己OpenCV对应的opencv_contrib版本并下载。
1.2 下载CMake
地址:https://cmake.org/download/
2、 编译OpenCV
2.1 打开CMake
解压cmake-3.16.0-rc1-win64-x64并启动CMake。
启动器在文件夹:cmake-3.16.0-rc1-win64-x64\bin\cmake-gui.exe
2.2
2.2.1 source code: OpenCV解压包里面【sources 】的路径
build the binaries: (在OpenCV解压包里面新建文件夹,命名为:Mybuild) 【Mybuild 】的路径。
2.2.2 然后点击【Configure】按钮。第一次运行完毕,下方进度栏出现红色文字,就是有错误出现,我就第二次点击【Configure】,结果红色字体没有了。
2.2.3 当下方框里没有了红色字体,点击【Generate】。直到下方出现Configuring done / Generating done
,此时说明OpenCV基本库编译完成。
3、编译opencv_contrib
3.1 在【Seach】对话框中输入【OPENCV_EXTRA_MODULES_PATH】,找到OPENCV_EXTRA_MODULES_PATH后,在value中填入编译opencv_contrib解压目录中的modules路径(注意:此处路径的反斜杠\要改成正斜杠/,反斜杠\有转义字符的意思)。目录错误则会出现Error in configuration process, project files may be invalid弹窗错误提醒。
3.2 在搜索栏中输入【OPENCV_ENABLE_NONFREE
】,在【Value】值中点击选中。如果没有选中,那么类似SIFT这种已经被申请专利的方法就无法使用。然后点击【Configure】。
在下方出现【Configuring done
】之后,点击【Generate】
4、visual studio编译
4.1 在E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild 文件夹中找到【OpenCV.sln】打开。
4.2 选择【生成】-【批生成】
5、配置opencv环境
注意:以下添加的的路径均为 Mybuile/install 文件夹中的内容
5.1【此电脑】-【属性】-【高级系统设置】-【环境变量】-【系统变量】
在【Path】里面添加:E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild\install\x64\vc14\bin
如果 visual studio 在修改环境变量之前就打开了,需要重启visual studio。
5.2 配置包含目录
5.2.1 【视图】—【属性管理器】—下方出现一个【属性管理器】
5.2.2 【属性管理器】—【Debug|Win64】—【Microsoft.Cpp.x64.user】(右键)—【属性】—【通用属性】—【VC++目录】—【包含目录】—【编辑】—添加2个目录
路径为:
E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild\install\include
E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild\install\include\opencv2
5.3 配置库目录
5.3.1 接着上步,在【通用属性】—【VC++目录】—【库目录】
编辑并添加路径。
路径为:E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild\install\x64\vc14\lib
5.4 配置链接库
5.4.1 接着上步,在【通用属性】—【链接器】—【输入】—【附加的依赖项】,添加文件路径在.lib文件夹内(E:\Installation package\opencv-4.1.1-vc14_vc15\Mybuild\install\x64\vc14\lib)。找到以下三个文件名:
opencv_world411d.lib
opencv_xfeatures2d411d.lib
opencv_features2d411d.lib
带【d】对应 【Debug x64】位版本。
6、SIFT测试
6.1 测试代码
#include "opencv2/opencv.hpp"
#include"opencv2/xfeatures2d.hpp"
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("C:\\Users\\Lenovo-Gu\\Desktop\\sucai\\car.jpg");
Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
vector<KeyPoint> keypoints;
Mat descriptors;
sift->detectAndCompute(img, noArray(), keypoints, descriptors);
drawKeypoints(img, keypoints, descriptors, cv::Scalar::all(-1));
imshow("Result", descriptors);
waitKey(0);
return 0;
}
6.2 测试结果
参考链接:https://blog.csdn.net/weijifen000/article/details/93377143
https://blog.csdn.net/ezhchai/article/details/80557936
You got things to do. Places to go. People to see. Futures to make.
我们还有事要做,有地儿要去,有人要见,有梦要实现。