最近开始学习opencv,先看的当然是毛星云的那本《opencv3编程入门》,于是我下载了截止写此文档时最新opencv3.3.0版本以及vs2017,然后终于把一张图片读取了出来,由于不熟悉,期间花费了很多时间和精力,所以我把我出现的一些问题分享出来,方便大家解决自己出现的问题。
学习opencv,首先要下载两个东西,一个是opencv3.3.0,这个是开源的,到相关网站即可下载,它实质就是个压缩包,里面是一些与图像处理有关的文件源码。另一个是Vs 2017 IDE,其实这个就是之前我们学习C语言用的经典的Viscual C++6.0的高版本,以前是收费的,现在社区版免费了,可以直接去官网下载,安装时默认是C#语言,所以用c++需要另外勾选,就像下图1要另外勾选使用 C++ 的桌面开发

关于 vs2017+win10+opencv3.3.0_opencv-3-3
关于安装和环境变量设置的具体说明,我觉得毛星云和"qq_38906523"这位朋友写的文章就不错,毛星云书的版本稍微有些旧,在图2这里不用添加这么多了,因为3.3.0版本只需添加两句即可,相关内容,其他朋友已经写的很详细了,关于 vs2017+win10+opencv3.3.0_Vs2017_02
还有一个问题,相信也会困扰大家,就是在新建项目时,找不到win32控制台应用程序,我是因为这个问题浪费了好多时间,我去下载相应的插件就像图中那样,可是vs2017总是莫名其妙的闪退,
关于 vs2017+win10+opencv3.3.0_opencv-3-3_03
最后我果断放弃添加插件,直接点了windows控制台应用程序,最终也出来了,原来win32意思是编译器用的是32位的(与32位电脑或者64位电脑无关),而windows控制台应用程序估计是64位的,所以最终编译时我选择了在64位环境下编译,
设置如图4
关于 vs2017+win10+opencv3.3.0_opencv-3-3_04
接着又遇到了问题,在编译时出现这样的错误,“1>d:\opencvproject\8_20_3\main\main\main.cpp(20): fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “stdafx.h””?”
原因是因为该版本需要添加的另外的头文件 #include "stdafx.h"
关于 vs2017+win10+opencv3.3.0_Vs2017_05
该问题解决后,在dos窗口中出现了“OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\build\master_winpack-build-win64-vc14\opencv\modules\highgui\src\window.cpp, line 325”的问题,原因是因为我图片放置的位置不对,需要将图片放置在.cpp文件同目录下,最后,我终于将一幅图片显示出来了,环境终于配置成功,毛星云的那本书虽然版本与我的有些不一样,但是大同小异,十分系统,还是很好的入门教材。
我的测试程序:

#include <iostream>  
#include "stdafx.h"
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  

using namespace cv;

int main() {
	// 读入一张图片(游戏原画)    
	Mat img = imread("1.jpg");
	// 创建一个名为 "游戏原画"窗口    
	namedWindow("游戏原画");
	// 在窗口中显示游戏原画    
	imshow("游戏原画", img);
	// 等待6000 ms后窗口自动关闭    
	waitKey(6000);
}

关于 vs2017+win10+opencv3.3.0_opencv-3-3_06