OpenCV 之 VS2017环境配置OK,图片却显示纯灰色
OpenCV 之 VS2017环境配置OK,图片却显示灰色。在win 10 x64位上,使用Visual Studio 2017 开发Opencv ,在环境配置正确的情况下,读取到的图片却显示不正常,为纯灰白色,分析原因,在使用了 cin.get() 和 system("pause") 等待输入,保证运行完不立即关闭窗口时候,因为机制的原因显示图片会阻塞,可能就导致显示为纯灰白色,然后更改为 opencv 的 waitKey() 用来 等待(opencv 自带),保证运行完不立即关闭窗口,具体过程如下
1、打开 Visual Studio 2017 新建一个工程,具体如下图
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的),具体如下图
3、编写脚本,读取图片,并显示图片,代码中使用了 cin.get() 来暂停查看结果,运行结果显示图片为纯灰白色,具体如下图
4、修改脚本,把 cin.get() 更改为 system("pause") 来暂停查看结果,运行结果显示图片为纯灰白色,具体如下图
5、最后把 cin.get() 和 system("pause") 修改为 opencv 自带的 waitKey(),此时,图片显示就正常了,具体如下图
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;
}