没有装opencv的先看看我上一篇博客opencv安装的第一步:
https://blog.youkuaiyun.com/qq_43249043/article/details/95337180
1.下载opencv_contrib
打开 https://github.com/opencv/opencv_contrib 最好用chrome 上一篇已讲
*******************************
下载好的文件和opencv放在同一级,方便后续操作
2.Cmake的下载安装
下载地址:https://cmake.org/download/
不要装 Release Candidate (3.15.0-rc3)下面的,会发生未知的bug
下载完后还是一个应用程序 ,就无脑安装,别忘了Add Path,就不用自己手动加入path了,但是记得还是要和opencv同一个级,方便操作
****************************
3.Cmake编译
Where is the source code 选刚装好的opencv的source目录下
第二行先新建一个文件夹,名字随便取,还是和opencv同级,好操作
VS看着自己的选,别选错了,问题很严重的
等待一些时间后,下面会显示 configuring done
然后中间一片红色 然后三步走
1.BUILD_opencv_world 打勾;
2.OPENCV_ENABLE_NONFREE 打勾
3.OPENCV_EXTRA_MODELS_PATH添加G:\opencv_contrib-4.1.0\modules(根据自己情况改)
再点下边的 Generate
等待,直到 configuring done generating done 出现
到这步为止,你的Cmake编译就完成了
4.VS编译
打开你刚刚新建的文件夹,Cmake编译好的opencv在里边
用VS打开图里的那个文件
然后点击生成解决方案,等待一段时间
注意:看清楚是不是选了Debug x64环境,不然就做了无用功
*******************************就是这个
然后打开解决方案管理器
************
然后按照图里的指示点击
继续等待,成功会显示成功1个,失败0个,跳过0个,最新0个
到这里VS的编译就完成了,看看自己有没有install这个文件
5.系统环境的配置
1.把(注意有;) ;G:\opencv_for_vs\install\x64\vc16\bin (根据自己配置更改)加入到Path里面
2. .把G:\opencv_for_vs\install\x64\vc16\bin目录里面的opencv_ffmpeg410_64.dll复制到C:\Windows\System32里,把opencv_world410d.dll复制到C:\Windows\SysWOW64里
没有这一步会报错 没有动态链接库Creat::…啥的,很奇怪的字符
3.改属性
***
然后这样 *****************************
改下面包含目录 ,库目录,附加依赖项的内容
包含目录里面放 G:\opencv_for_vs\install\include\opencv2(选自己的目录)
****************G:\opencv_for_vs\install\include
库目录里面放 G:\opencv_for_vs\install\x64\vc16\lib
附加依赖项里面放 opencv_world410d.lib (410是4.1.0版本的意思)
然后选择加载Misrcosoft的服务,不加载运行程序会报错缺少dll
************************************
在此目录下缓存符号,对着改自己的路径,先创个文件夹叫Misrcosoft.pdb
到这里就应该可以了,试试程序,记得跑x64的编译器,因为我们刚刚都是在x64上调试的
我的代码来源是 https://blog.youkuaiyun.com/lindamtd/article/details/80667826
精度挺高的,很好用
不过好像有个小地方报错了,我小小改动一下(不知道算不算转载,侵删哈
#include <iostream>
#include <vector>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/highgui.hpp>
#include<opencv.hpp>
#include <opencv2/core/core.hpp>
#include<opencv2/core.hpp>
#include<stdio.h>
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;
int main(