opencv3.4.1源码编译-OpenCV3.4.1+opencv_contrib编译:windows10

做计算机视觉的人恐怕没有人没有用过OpenCV这个著名的开源计算机视觉算法库。 OpenCV 仍在开发中。 最新版本3.4已经可以支持CNN了。 未来恐怕还会集成更多的功能。

但由于知识产权原因,OpenCV将很多算法放在opencv_contrib中。 在github上,这两段代码放在不同的仓库中。

OpenCV官方提供了windows可安装版本,已经编译了dll,但不包含opencv_contrib。 如果要使用这部分算法,需要自己编译opencv,将opencv_contrib编译成opencv。 下面简单介绍一下windows下编译opencv的过程。

所需材料:

1.下载opencv源码

源码地址为:,默认为master分支。 看来下载master分支就够了。 不过为了明确源码版本,方便后期匹配,我在tags中选择了最新版本,版本3.4.1,地址为:

代码可以通过git下载opencv3.4.1源码编译,只需使用gitclone命令即可。 您也可以点击网页上的红色按钮克隆或下载,然后点击downloadzip。

2.下载opencv_contrib源码

opencv_contrib代码地址为:

3.4.1版本的代码地址为:

相信你也发现了其中的规律。 参考下载opencv源码的方法即可。

下载后,将代码解压到本地目录

上图是我解压后的目录,里面有opencv和opencv_contrib的解压目录,还有一个build目录用来放置cmake生成的vs工程。

3.安装cmake

CMake是一个跨平台的编译工具,可以输出各种makefile或项目文件。

下载链接:

直接下载运行,默认安装。

4.使用cmake生成vs项目

安装cmake后,运行cmake并填写前两项。

其中isthesourcecode是opencv源码路径,即“源码路径

wheretobuildthebinaries是生成opencv的vs项目路径,即“目标路径”

单击“配置”,弹出对话框选择编译工程的平台。 我选择的是64位VS2015

单击“完成”开始配置。 这需要一定的时间,期间需要下载一些依赖项。 这时候,畅通的网络就起到了关键的作用。 如果下载不完整,可以通过查看日志文件CMakeDownloadLog.txt自动下载。 完成第一次配置后,将出现以下屏幕。

白色选项很多,说明有问题。 解决方法是再次单击“配置”。 这次速度快了很多,并且出现了以下屏幕。

如果一切都变成白色,则说明没有问题。 需要进行两处更改。

第一项是检查 BUILD_opencv_world 选项。 这样调用dll的时候就只调用这个了。 不需要根据功能来选择,省去了一些麻烦。

第二项自然是在OPENCV_EXTRA_MODULES_PATH选项中填写opencv_contrib解压目录下的modules文件夹的路径,这样opencv_contrib就被编译进去了。

然后按配置进行配置。 和上面一样,一次红两次白opencv3.4.1源码编译,就不细说了。 第二次全白了,就可以按Generate按钮生成vs工程文件了。

5.用VS2015编译opencv源码

工程生成完成后,可以在刚才提到的“目标路径”下看到OpenCV工程文件。

用vs2015打开工程文件,选择Debugx64,点击Generate ->Generate Solution开始编译。 这个过程比较漫长,需要耐心。 结果如下。

没有错误,然后右键INSTALL,点击“Only for project ->Generate INSTALL only”

opencv3.4.1源码编译-OpenCV3.4.1+opencv_contrib编译:windows10

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

然后将编译选项调整为Releaseex64并重复上述过程。 此时,调用dll的所有内容都在“目标路径”的安装目录下生成。

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

为了验证生成文件的有效性,创建一个新项目并将库目录和include目录指定为安装文件夹下的x64/vc14/lib和include文件夹。 处理图片和文字标准测试图片屋

测试代码如下:

#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 sift = xfeatures2d::SIFT::create();
    vector keypoints;
    Mat descriptors;
    sift->detectAndCompute(img,noArray(),keypoints,descriptors);
    drawKeypoints(img,descriptors,Scalar(0,255,255));
    imshow("Result",descriptors);
    waitKey(0);
    return 0; 
}

测试结果如下。

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 opencv3.4.1源码编译-OpenCV3.4.1+opencv_contrib编译:windows10 https://www.wkzy.net/game/196820.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务