当我必须显示图像程序显示空窗口而不显示图像时,我在visual studio 2010中使用opencv2.4.9

这是我的代码:
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\core\core.hpp>
#include<opencv\cv.h>
int main(int argc,char**argv[]) {
IplImage* img1=cvLoadImage("C:\opencv\sources\samples\cpp\board.jpg");
cvNamedWindow("img1",CV_WINDOW_AUTOSIZE);
cvShowImage("img1",img1);
cvWaitKey(0);
cvReleaseImage(&img1);
}发布于 2016-07-18 13:53:55
问题出在你写图像路径的方式上。您不应该单独使用转义字符。您可以通过以下方法之一来解决此问题:
IplImage* img1=cvLoadImage("C:\\opencv\\sources\\samples\\cpp\\board.jpg");或者:
IplImage* img1=cvLoadImage("C:/opencv/sources/samples/cpp/board.jpg");或者:
IplImage* img1=cvLoadImage(R"(C:\opencv\sources\samples\cpp\board.jpg)");顺便说一句,你使用的C接口数据实在太少了。如果你没有真正的理由使用它,请不要这样做。使用C++的等效代码为:
int main(int argc,char**argv[]) {
cv::Mat img1=cv::imread("C:\\opencv\\sources\\samples\\cpp\\board.jpg");
cv::namedWindow("img1",CV_WINDOW_AUTOSIZE);
cv::imshow("img1",img1);
cv::waitKey(0);
//No need to release manually
}发布于 2016-07-18 14:03:06
如果您使用Mat,则可以使用:
if (frame1.empty())
{
std::cout << "no image";
break;
} 然后如果图像不是空的,你应该使用更多的延迟来显示图像。例如,您可以使用:
waitKey(100);https://stackoverflow.com/questions/38429328
复制相似问题