运行环境:
win10
visual studio 2015(vc14)
opencv4.0.0
♠opencv4.0.0安装依赖(五步)
1.下载opencv_contri ,下载地址:https://github.com/opencv/opencv_contrib
在Branch->Tags里面对版本号进行修改,之后下载到本地即可。
关于解压位置:我的解压位置供参考:
说明:opencv是我下载的opencv4.0.0解压的文件夹;
opencv_buildx64是我新建的文件夹,存储安装依赖后的opencv。名字可以任取,建议全英文格式;
opencv_contrib-4.0.0是下载依赖后解压的文件夹。
2. 安装cmake,下载地址:https://cmake.org/download/
安装完成后即出现在软件列表里面。点击运行。
如果软件列表里面没有出现,打开解压位置的bin文件夹,双击运行cmake-gui.exe即可。
打开,会有编译器选择:
【重要的事情说三遍】
编译器选择我选了visual studio 2015 Win64。下面用默认的compiler就行,无需修改。
编译器选择我选了visual studio 2015 Win64。下面用默认的compiler就行,无需修改。
编译器选择我选了visual studio 2015 Win64。下面用默认的compiler就行,无需修改。
默认的是Visual Studio 14 2015,这个到vs那里生成解决方案是【Win32】!!!这里不建议选这个。因为win32编译(install文件夹里)出来对应文件是x86,和opencv默认版本x64不匹配。
(别问我是怎么知道的 /微笑)
之后设置source code,按图片里的即可。
source code放opencv文件夹里的source
where to build the binaries放在一个新建文件夹里
中间红框name和value的选择(三处):
●BUILD_opencv_world 打勾
●OPENCV_ENABLE_NONFREE 打勾
●OPENCV_EXTRA_MODELS_PATH添加G:\opencv_400\opencv_contrib-4.0.0\opencv_contrib-4.0.0\modules
添加路径的时候建议按右边三个点那里选择,直接路径复制过去可能会有小错误。
完成上述三步后,分别【Configure】->【Generate】->【Open Project】
直到name和value那里没有红色,configure和generate都提示一行成功。open project即用vs2015打开新建文件夹(G:\opencv_400\opencv_buildx64)下的OpenCV.sln文件。
3.生成解决方案,生成install文件夹
(这个过程大概需要半小时,详细操作如下)
●解决方案配置:Debug 和x64
生成->生成解决方案
(大概十几分钟的样子,我也不太清楚这一过程是否需要联网)
● 仅生成install
解决方案管理器,右击install
选择:【仅用于项目】->【仅生成INSTALL】(如下图所示)
(而后大概等待十几分钟)
●将解决方案配置调为 Release x64,重复上述操作。
4.环境变量及工程中的一些设置:
环境变量:将新生成的install\x64\vc14\bin加入环境变量PATH中。
工程中的设置:新文件夹中的install取代之前的opencv。
之前工程设置三部分,这里只需要对包含目录和库目录进行修改,链接器里的内容无需做修改。
5.完成!测试代码:
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
Mat src= imread("H.jpg");
Mat src2 = imread("22.jpg");
if((src.data == NULL) ||(src2.data == NULL))
{
cout << "No exist" << endl;
return -1;
}
Ptr sift = xfeatures2d::SIFT::create(400); //括号参数越大越精确,自定
vector keypointsa,kp2;
Mat a,b;
sift->detectAndCompute(src,noArray(),keypointsa,a); //得到特征点和特征点描述
sift->detectAndCompute(src2,noArray(),kp2, b);
drawKeypoints(src, keypointsa,src);//画出特征点
drawKeypoints(src2, kp2, src2);
//接下来就是显示了
imshow("pic1", src);
//imshow("pic2", src2);
//这里只显示了pic1的特征点提取,pic2去掉注释即可显示。
waitKey();
return 0;
}
参考博客
特征点匹配drawmatch待续...