做计算机视觉的朋友,估计没有人没用过OpenCV,著名的开源计算机视觉算法库。OpenCV还在不断发展中,最新的3.4版本,已经可以支持cnn了,以后估计会有集成更多的功能。

不过,由于知识产权的原因,OpenCV将很多算法放到了opencv_contrib中,在github上,这两块代码就是分别放在不同的repository中的。


OpenCV官方提供了windows可安装的版本,已经有编译好的dll,不过不包括opencv_contrib。如果想应用这部分算法,则需要自己编译opencv,将opencv_contrib编译到opencv中。以下简单介绍以下opencv在windows下编译的过程。
所需材料:

* opencv源代码
* opencv_contrib源代码
* cmake
* vs2015
* 一个通畅的网络(这点很重要~)
1.下载opencv源代码
源代码的地址是:https://github.com/opencv/opencv/ <https://github.com/opencv/opencv/>
,默认是master分支。其实都下载master分支,就可以。不过,为了清晰源代码版本,以后还能做到匹配,我选择了tags中的最新版本,3.4.1版本,地址是:
https://github.com/opencv/opencv/tree/3.4.1
<https://github.com/opencv/opencv/tree/3.4.1>
代码可通过git下载,用git clone命令即可。也可以在网页上点击Clone or download这个绿色按钮,然后点击download
zip就可以。


2.下载opencv_contrib源代码
opencv_contrib代码地址是:https://github.com/opencv/opencv_contrib
<https://github.com/opencv/opencv_contrib>
3.4.1版本代码地址是:https://github.com/opencv/opencv_contrib/tree/3.4.1
<https://github.com/opencv/opencv_contrib/tree/3.4.1>
相信大家也都发现规律了,参考下载opencv源代码方法即可。
下载后,解压代码到本地目录。

上图就是我解压的目录,其中有opencv和opencv_contrib的解压目录,还有一个build目录,用来放置cmake生成的vs工程。
3.安装cmake
CMake是一个跨平台的编译工具,能够输出各种各样的makefile或者project文件。

下载地址:https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi
<https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi>
下载之后直接运行,默认安装即可。
4.用cmake生成vs工程
安装好cmake之后,运行cmake,先填写开头的两项

Where is the source code是opencv源码路径,即“源路径”
Where to build the binaries是要生成opencv的vs工程路径,即“目的路径”
点击Configure,弹出对话框,选择编译工程的平台。我选的是64位的VS2015


点击Finish,即开始配置。这需要一定的时间,期间要下载一些依赖项,此时通畅的网络就起了关键作用,如果下载不全,可通过查看日志文件CMakeDownloadLog.txt手动下载。在完成第一次配置后,出现如下画面。

有很多红色选项,说明有问题,解决方法就是再点击一次Configure,这次快多了,出现下面画面。

全变白了,说明没问题了,这是需要做两项改动。

第一项是勾选BUILD_opencv_world选项,这样,在调用dll时,只调用这一个就行了,不用根据功能选择了,省了些麻烦。


这第二项,自然是在OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了。
然后再按Configure进行配置,和前面一样,一次红,二次白,不在赘述了。第二次全白了,就可以按Generate按键,生成vs工程文件了。

5.用VS2015编译opencv源代码
生成工程完毕,在刚才说的“目的路径”下,可以看到OpenCV工程文件

用vs2015打开工程文件,选择Debug x64,点击生成->生成解决方案开始编译,这个过程比较漫长,需要耐心,结果如下。

没有错误,然后右击INSTALL,点击“仅用于项目->仅生成INSTALL”

即可编译生成dll相关文件,编译过程如下。

然后将编译选项调整为Release x64,再重复一下以上的过程。此时在“目的路径”的install目录下,生成了调用dll的全部内容。

6.调用生成的dll实现图像处理功能

为了验证生成文件的有效性,新建工程,将库目录和包含目录指定到install文件夹下x64/vc14/lib和include文件夹。处理图片文标准测试图片house

测试代码如下:
#include "opencv2/opencv.hpp" #include"opencv2/xfeatures2d.hpp" #if _DEBUG
#pragma comment(lib,"opencv_world341d.lib") #else #pragma
comment(lib,"opencv_world341.lib") #endif // _DEBUG using namespace cv; using
namespace std; int main(){ Mat img = imread("E:/PASCAL/OpenCV/house.jpg",
CV_LOAD_IMAGE_COLOR); Ptr<Feature2D> sift = xfeatures2d::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); return 0; }
测试结果如下。

实现了contrib中sift特征点的提取。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信