欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

VS2017 + cmake 3.7 + opencv 3.2 编译

发布时间:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VS2017 + cmake 3.7 + opencv 3.2 编译 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

由于各种原因使用了VS2010不支持的功能,需要在VS2017上使用opencv,且opencv release 没有 vc15(VS2017需要的),所以需要编译opencv 固有此文


本文参考:

http://blog.csdn.net/maize1111/article/details/68923677

http://blog.csdn.net/jarvischu/article/details/8468894


电脑配置: Win10  64bit

1. 在opencv官网上下载 open3.2 的source文件, copy到D盘 解压缩 D:\opencv-3.2.0,在 D:\opencv-3.2.0 文件夹新建 build/vc15

2. 打开Cmake (电脑上没安装的去官网下载安装)

在source code 和 build 分别browse到路径,其中source code是含有Cmakelist文本文件的那个文件夹,build是我们刚刚建好的空文件夹


输好路径之后,点configure,选Visual Studio 15,确认,等待几分钟,如果没有错误则点generate,再没有错误就 open project。

我一开始用Visual Studio 15 + opencv2.4做的时候最后报错版本不匹配,后来换成3.2版本就没有问题了


3. openproject 打开VS2017后,在左栏项目文件下面  选择CMakeTargets下面的INSTALL,右键点击,选择build生成(分别在Debug和Release下面生成两次),生成之后就意味着你的OpenCV已经编译成功了

首先,在系统变量PATH中添加你编译的OpenCV路径,D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\x86\vc14\lib 加入PATH变量中。

然后把D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\x86\vc14\bin下的所有DLL文件Copy到C:\Windows\SysWOW64以及C:\Windows\System32下面。


4. 之后开始配置 VS 项目属性

点project - 选最后一个 '属性',分别在debug 和 release 选项下配置,debug和release 的配置过程基本相同,唯一的不同点是添加附加依赖项的时候文件名相差一个字母


4.1 配置包含文件

D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\include
D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\include\opencv
D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\include\opencv2

4.2 配置库文件

D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\x86\vc14\lib

4.3 配置附加依赖项

4.3.1 Debug下面

复制 下面的内容, 此处应注意,确认如下文件名是否可以在 D:\opencv-3.2.0\opencv-3.2.0\build\vc15\install\x86\vc14\lib  文件夹下被找到,因为opencv版本不同,文件名也不一样,填写内容应与lib文件夹下文件名匹配

opencv_ml320d.lib
opencv_calib3d320d.lib
opencv_core320d.lib
opencv_features2d320d.lib
opencv_flann320d.lib
opencv_highgui320d.lib
opencv_imgcodecs320d.lib
opencv_imgproc320d.lib
opencv_objdetect320d.lib
opencv_video320d.lib
opencv_photo320d.lib
opencv_shape320d.lib
opencv_stitching320d.lib
opencv_superres320d.lib
opencv_videostab320d.lib
opencv_videoio320d.lib



4.3.2 Release下面

同理 复制

opencv_ml320.lib
opencv_calib3d320.lib
opencv_core320.lib
opencv_features2d320.lib
opencv_flann320.lib
opencv_highgui320.lib
opencv_imgcodecs320.lib
opencv_imgproc320.lib
opencv_objdetect320.lib
opencv_video320.lib
opencv_photo320.lib
opencv_shape320.lib
opencv_stitching320.lib
opencv_superres320.lib
opencv_videostab320.lib
opencv_videoio320.lib



确认 所有对话框


5. 测试

#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv; using namespace std; static void help() { cout << "\nThis program demonstrates circle finding with the Hough transform.\n" "Usage:\n" "./houghcircles <image_name>, Default is pic1.png\n" << endl; } int main(int argc, char** argv) { const char* filename = argc >= 2 ? argv[1] : "board.jpg"; Mat img = imread(filename, 0); if(img.empty()) { help(); cout << "can not open " << filename << endl; return -1; } Mat cimg; medianBlur(img, img, 5); cvtColor(img, cimg, COLOR_GRAY2BGR); vector<Vec3f> circles; HoughCircles(img, circles, CV_HOUGH_GRADIENT, 1, 10, 100, 30, 1, 30 // change the last two parameters // (min_radius & max_radius) to detect larger circles ); for( size_t i = 0; i < circles.size(); i++ ) { Vec3i c = circles[i]; circle( cimg, Point(c[0], c[1]), c[2], Scalar(0,0,255), 3, CV_AA); circle( cimg, Point(c[0], c[1]), 2, Scalar(0,255,0), 3, CV_AA); } imshow("detected circles", cimg); waitKey(); return 0; }


注意,要保证项目文件夹下已经拷贝名为 board.jpg
的图片,否则运行结果显示找不到图片


成功!


总结

以上是生活随笔为你收集整理的VS2017 + cmake 3.7 + opencv 3.2 编译的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。