Image OpenCV::Mat是否显示空的灰色图像?找不到原因 我只想在C++项目中显示这个“img1.jpg”图像,然后使用OpenCV LIBS做将来的处理,但是它只显示一个空灰色窗口。原因何在?。这个代码有错误吗?请帮忙
这是代码Image OpenCV::Mat是否显示空的灰色图像?找不到原因 我只想在C++项目中显示这个“img1.jpg”图像,然后使用OpenCV LIBS做将来的处理,但是它只显示一个空灰色窗口。原因何在?。这个代码有错误吗?请帮忙,image,opencv,Image,Opencv,这是代码 Mat img1; char imagePath[256] = "img1.jpg"; img1 = imread(imagePath, CV_LOAD_IMAGE_GRAYSCALE); namedWindow("result", 1); imshow("result", img1); 谢谢…您是否导入了正确的库? 这是加载一个图像的另一种非常简单的方法: #define CV_NO_BACKWARD_COMPATIBILITY #include <cv.h>
Mat img1;
char imagePath[256] = "img1.jpg";
img1 = imread(imagePath, CV_LOAD_IMAGE_GRAYSCALE);
namedWindow("result", 1);
imshow("result", img1);
谢谢…您是否导入了正确的库? 这是加载一个图像的另一种非常简单的方法:
#define CV_NO_BACKWARD_COMPATIBILITY
#include <cv.h>
#include <highgui.h>
#include <math.h>
main(){
IplImage* img = cvLoadImage("yourPicture.jpg");
cvNamedWindow("Original", 1);
cvShowImage("Original", img);
}
#定义CV(无向后)兼容性
#包括
#包括
#包括
main(){
IplImage*img=cvLoadImage(“yourPicture.jpg”);
cvNamedWindow(“原件”,1);
cvShowImage(“原件”,img);
}
我认为您已经正确安装了openCV,因此您可以键入以下内容(Ubuntu):
g++NameOfYourProgram.cpp-o Sample-I/usr/local/include/opencv/-L/usr/local/lib-lcv-lhighgui./Sample我遇到了同样的问题,解决了Puting
waitKey(1)代码>在imshow()之后。OpenCV文档解释了以下原因:
此函数是HighGUI中唯一可以获取和处理
事件,因此需要为正常事件定期调用它
处理,除非在需要
关注事件处理
您遇到的问题是由于Mat img1
的类型造成的。当您使用标志CV\u load\u image\u GRAYSCALE
加载图像时,Mat
的类型为0(CV\u 8UC1
),并且函数imshow()
无法正确显示图像。
您可以通过将Mat
转换为16型(CV_8UC3
)来解决此问题:
然后使用imshow()
显示它:
我希望这能有所帮助。谢谢@b_froz。
有关此问题的更多详细信息,请参阅:
注意:此函数后面应该是waitKey函数,它显示指定毫秒的图像。否则,它将不会显示图像。例如,waitKey(0)将无限显示窗口,直到按任意键为止(适用于图像显示)。waitKey(25)将显示一帧25毫秒,之后显示屏将自动关闭。(如果将其放入循环中以读取视频,它将逐帧显示视频)
因此,不仅waitkey(1)
可以放在imshow()
之后,而且waitkey(0)
或waitkey(其他整数)
之后。下面是对函数waitkey()
的解释:这也帮助了我-我建议将其标记为正确答案。我同意,它是有效的。我不完全理解其中的原因,但在担心我必须实现/安装一些编解码器之后,这是一种甜蜜的解脱!为了提供更多细节,我在使用OpenCV 2.3.1和Visual Studio 2008(VC90)时遇到了同样的问题,我必须插入一个waitKey(1)使其工作。
img1.convertTo(img1,CV_8UC3);
imshow("result", img1);