目录
可以去我的资源下载编译好的库文件,省去自己编译的麻烦。
1、下载:
下载opencv源代码
源代码的地址是:https://github.com/opencv/opencv/
下载opencv_contrib源代码
opencv_contrib代码地址是:https://github.com/opencv/opencv_contrib
下载解压即可,opencv和opencv_contrib版本号必须一致;
2、cmake
- 新建build文件夹
- 打开cmake,链接source和build路径
- Configure 两次,
- 如果使用sift等非公开的特征算子,需要勾选nonfree选项;链接contrib模块路径,再次Configure,然后Generate
- 勾选
可以勾选opencv_world选项让生成的dll文件只有opencv_world一个,这样调用起来更加方便。
- 链接contrib模块路径
3.VS2015编译:
打开工程Open Project;
直接编译运行的话,有可能报错
LINK : fatal error LNK1210: 已超过内部 ILK 大小限制;链接时使用 /INCREMENTAL:NO
此时,把opencv_world项目属性页设置一下:
然后单独对该项目生成项目,生成之后,生成ALL_BUILD项目,然后生成install项目,在build/install即编译完成的文件;保存该文件夹,如果节省空间,其他文件都可以删了;配置工程时,链接build/install/include build/install/x64/vc14/lib文件夹即可,bin下是dll文件,将opencv_world452d.dll这一个dll拷贝到工程目录,不需要其他很多的dll,因为cmake的时候勾选了
选项,所以只需要这一个文件,方便快捷。
4.测试
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d.hpp>
using namespace std;
using namespace cv;
void main()
{
Mat img = imread("1.jpg", IMREAD_COLOR);
Ptr<Feature2D> sift = cv::SIFT::create();
vector<KeyPoint> keypoints;
Mat descriptors;
sift->detectAndCompute(img, noArray(), keypoints, descriptors);
drawKeypoints(img, keypoints, descriptors, Scalar(0, 255, 255));
imshow("Result", descriptors);
waitKey(0);
}
特征点图 原图