OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

OpenCV 之 VS2017环境配置OK,图片却显示灰色。在win 10 x64位上,使用Visual Studio 2017 开发Opencv ,在环境配置正确的情况下,读取到的图片却显示不正常,为纯灰白色,分析原因,在使用了 cin.get() 和 system("pause") 等待输入,保证运行完不立即关闭窗口时候,因为机制的原因显示图片会阻塞,可能就导致显示为纯灰白色,然后更改为 opencv 的 waitKey() 用来 等待(opencv 自带),保证运行完不立即关闭窗口,具体过程如下

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

1、打开 Visual Studio 2017 新建一个工程,具体如下图

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

2、配置opencv所需环境,在属性中配置头文件目录、库目录、和链接器—附加依赖项;头文件的三个目录……\opencv\build\include、……\opencv\build\include\opencv、……\opencv\build\include\opencv2,库目录 ……\opencv\build\x64\vc14\lib,链接器—附加依赖项中输入库目录下的 opencv_world345d.lib(测试版本Debug使用带d的,发布版本Release使用不带d的),具体如下图

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色OpenCV 之 VS2017环境配置OK,图片却显示纯灰色OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

3、编写脚本,读取图片,并显示图片,代码中使用了 cin.get() 来暂停查看结果,运行结果显示图片为纯灰白色,具体如下图

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

4、修改脚本,把 cin.get() 更改为 system("pause") 来暂停查看结果,运行结果显示图片为纯灰白色,具体如下图

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

5、最后把 cin.get() 和 system("pause") 修改为 opencv 自带的 waitKey(),此时,图片显示就正常了,具体如下图

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

OpenCV 之 VS2017环境配置OK,图片却显示纯灰色

 

6、

脚本具体代码如下:

#include "pch.h"

#include <iostream>

#include <opencv2\opencv.hpp>

 

using namespace cv;

using namespace std;

 

int main()

{

// 使用绝对路径 imread 读取图片信息

Mat srcMat = imread("C:/Users/xan/Desktop/Data Is Here/Images/Circle.jpg");

 

// 判断读取的数据,为空则是提示,并且返回

if (srcMat.empty()) {

cout << "获取图片为空,请检查\n";

 

cin.get(); // 等待输入,保证运行完不立即关闭窗口,看不到结果

return -1;

}

 

// 不为空,则输出图片尺寸和显示图片

cout << "src.size " << srcMat.size;

imshow("TestImage", srcMat);

//cin.get(); // 等待输入,保证运行完不立即关闭窗口,看不到结果

//system("pause"); // 等待输入,保证运行完不立即关闭窗口,看不到结果

waitKey(); // 等待(opencv 自带),保证运行完不立即关闭窗口,看不到结果

 

return 0;

}