VS2017下使用CMake配置opencv3.4.0


VS2017下使用CMake配置opencv3.4.0


1.首先自行安装vs2017社区版(也可选择专业版),选择C++相关组件
VS2017下使用CMake配置opencv3.4.0_第1张图片
2.然后在OpenCV官网下载OpenCV3.4.0
这里只下载Sources文件即可。
VS2017下使用CMake配置opencv3.4.0_第2张图片
VS2017下使用CMake配置opencv3.4.0_第3张图片

3.在GitHub上下载opencv_contrib3.4.0文件
添加链接描述
注意选择Tags,然后下载zip文件
VS2017下使用CMake配置opencv3.4.0_第4张图片

4.下载CMakecmake-3.12.0-rc3-win64-x64
添加链接描述
点击Older Releases这里链接选择以前的版本
VS2017下使用CMake配置opencv3.4.0_第5张图片
下载cmake-3.12.0-rc3-win64-x64.msi
VS2017下使用CMake配置opencv3.4.0_第6张图片
一般将CMake安装在默认路径即可。

5.将下载好的OpenCV3.4.0和opencv_contrib3.4.0解压出来放在同一个文件夹中
VS2017下使用CMake配置opencv3.4.0_第7张图片
在opencv3.4.0文件夹中新建一个“myBuild”文件夹
VS2017下使用CMake配置opencv3.4.0_第8张图片

6.打开CMake(cmake-gui)
cource code路径选择刚解压出来的opencv3.4.0文件夹
binaries路径选择刚才新建的“myBuild”文件夹
VS2017下使用CMake配置opencv3.4.0_第9张图片

7.然后点击【Configure】会弹出选择VS的界面,我选的是Visual Studio 15 2017 Win64------>>点Finish,开始configure
VS2017下使用CMake配置opencv3.4.0_第10张图片
此时等待一段时间。。。

8.虽然底部显示Configuring done,但还有一堆红的,说明这些项目配置不成功,有时是因为网络连接的问题下载失败

VS2017下使用CMake配置opencv3.4.0_第11张图片
将BUILD_opencv_world勾选上,原因是主要是把所有的lib文件都弄到一个opencv_world340d.lib中方便配置,若不勾选在最后会产生大概四五十个.lib文件,导致最后配置opencv到VS2017中添加附加依赖项太麻烦。

OPENCV_ERTRA_MOUDULES_PATH的路径为之前解压的opencv_contrib-3.4.0中的modules文件夹
VS2017下使用CMake配置opencv3.4.0_第12张图片
至于WITH_CUDA 这一项有些人说勾选会导致后期配置大量失败,我自己并没遇到这种情况,有这张情况的可以选择不勾选。
VS2017下使用CMake配置opencv3.4.0_第13张图片
其他项默认那些勾选项就好,不需要改动,
然后再次Configure。
如果还有红色项的话可以继续点Configure,有可能因为网络下载问题而失败,直到没有红色项。
VS2017下使用CMake配置opencv3.4.0_第14张图片

9.等没有红色项时先别急着Generate,打开opencv\opencv-3.4.0\myBuild中的CMakeDownloadLog.txt文档,可以看到现在缺失ffmpeg、ippicv和xfeatures2d文件,虽然文档中给了我们下载该文件的链接,但是链接却点不进去。
VS2017下使用CMake配置opencv3.4.0_第15张图片
并且我们可以打开D:\Opencv 3.4.0\opencv-3.4.0.cache文件夹
VS2017下使用CMake配置opencv3.4.0_第16张图片
VS2017下使用CMake配置opencv3.4.0_第17张图片
VS2017下使用CMake配置opencv3.4.0_第18张图片

这些文件大小都是0KB,说明下载配置失败。

这里我将这些文件上传至百度云,有需要的可以下载

opencv3.4.0相关cmake配置文件
提取密码:wwc8

我们将ffmpeg的6个文件放入opencv-3.4.0.cache\ffmpeg文件夹中;

VS2017下使用CMake配置opencv3.4.0_第19张图片

将0421e642bc7ad741a2236d3ec4190bdd-ippicv_2017u3_win_intel64_general_20170822.zip压缩包放入Opencv 3.4.0\opencv-3.4.0.cache\ippicv文件夹中;

VS2017下使用CMake配置opencv3.4.0_第20张图片

将boostdesc和vgg两个文件夹放入Opencv 3.4.0\opencv-3.4.0.cache\xfeatures2d文件夹中。
VS2017下使用CMake配置opencv3.4.0_第21张图片
将原本那些0KB的文件全部替换掉。

然后将opencv\opencv-3.4.0.cache中的ffmpeg文件夹复制,在opencv\opencv-3.4.0\myBuild\3rdparty中粘贴。
VS2017下使用CMake配置opencv3.4.0_第22张图片

此时再次点CMake的Configure,等待Configuring done后再点Generate,然后Generating done。

10.打开opencv\opencv-3.4.0\myBuild中的OpenCV.sln
可以看到正在加载。。。。
VS2017下使用CMake配置opencv3.4.0_第23张图片
加载完后 点击”视图“中的”解决方案资源管理器“
VS2017下使用CMake配置opencv3.4.0_第24张图片
右键单击”解决方案‘OpenCV’(418个项目)—>>再点击“生成解决方案”,此时需要等待很久。。。。。

11.此时可以打开一首老鹰乐队的’Wasted Time’听听,个人认为非常好听的一首老歌
VS2017下使用CMake配置opencv3.4.0_第25张图片

12.听完歌,也生成好了。
VS2017下使用CMake配置opencv3.4.0_第26张图片
此时右键单击INSTALL–>>仅用于项目–>>仅生成
VS2017下使用CMake配置opencv3.4.0_第27张图片
成功!!

13.接下来就和普通版配置环境变量一致了

此电脑–》》属性–》》–》》高级系统设置–》》–》》环境变量
VS2017下使用CMake配置opencv3.4.0_第28张图片
–》》双击path

VS2017下使用CMake配置opencv3.4.0_第29张图片

新建–》》将install\x64\vc15\bin的地址写入

VS2017下使用CMake配置opencv3.4.0_第30张图片
然后确定–》》确定–》》确定。

14.打开VS2017
随便新建一个空项目,打开“视图”–》》“属性管理器”“–》》
VS2017下使用CMake配置opencv3.4.0_第31张图片
右键Microsoft.Cpp.x64.user–》》属性
VS2017下使用CMake配置opencv3.4.0_第32张图片
1).VC++目录–》》包含目录–》》编辑
填入:
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include\opencv
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include\opencv2
这三个地址–》》确定
VS2017下使用CMake配置opencv3.4.0_第33张图片
2).库目录–》》编辑
填入地址:D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\x64\vc15\lib
–》》确定
VS2017下使用CMake配置opencv3.4.0_第34张图片

3).连接器–》》输入–》》附加依赖项–》》编辑
填入myBuild\install\x64\vc15\lib中这两个.lib文件的名称opencv_img_hash340d.lib
opencv_world340d.lib
VS2017下使用CMake配置opencv3.4.0_第35张图片
VS2017下使用CMake配置opencv3.4.0_第36张图片

再次点击确定–》》应用–》》确定。

15.右键单击Microsoft.Cpp.x64.user–》》保存

16.测试

#include
#include
using namespace std;
using namespace cv;

int num_corners = 25;
int max_corners = 500;
const char*output_title = "ShiTomas Detector";
void ShiTomas_Demo(int, void*);
Mat src, gray_src;
RNG rng(12345);

int main(int argc, char** argv) {
	src = imread("H:\\OpenCV代码练习\\lena标准测试图像\\color\\Airplane.jpg");
	if (src.empty()) {
		printf("it not find.\n");
		return -1;
	}

	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	cvtColor(src, gray_src, COLOR_BGR2GRAY);
	namedWindow(output_title, CV_WINDOW_AUTOSIZE);
	createTrackbar("Num Corners:", output_title, &num_corners, max_corners, ShiTomas_Demo);
	ShiTomas_Demo(0, 0);

	waitKey(0);
	return 1;

}

void ShiTomas_Demo(int, void*) {
	if (num_corners < 5) {
		num_corners = 5;
	}
	vector<Point2f>corners;
	double qualityLevel = 0.01;
	double minDistance = 10;
	int blockSize = 3;
	bool useHarris = false;
	double k = 0.04;
	Mat resultImg = gray_src.clone();//resultImg=gray_src的克隆
	goodFeaturesToTrack(gray_src, corners, num_corners, qualityLevel, minDistance, Mat(), blockSize, useHarris, k);
	printf("Number of Detected Corners:%d/n", corners.size());

	for (size_t t = 0; t < corners.size(); t++) {
		circle(resultImg, corners[t], 2, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 2, 8, 0);
	}
	imshow(output_title, resultImg);
}


角点检测成功,配置没问题。

你可能感兴趣的:(opencv,c++,cmake)