vs2008下,c++编写,用opencv显示图像,dubug后窗口只闪了一下,也没有显示图像。为什么?

2024-12-23 01:03:42
推荐回答(6个)
回答1:

第一个问题 在cvShowImage显示图像后,需要加一个暂停语句cvWaitKey(0),即按键后程序才继续运行,如果不暂停,程序运行完毕后将关闭窗口,所以形成你所说的问题;

补充问题:这个你得自己找原因了,单步运行程序,发现出现异常的地方,然后分析错误

回答2:

不知道你的代码如何,无法分析。
这下面的代码在vs2008下,c++编写,可以显示图片,debug也可以
#include

int _tmain(int argc, _TCHAR* argv[])
{
const char* imagename = "lena.jpg";

cv::Mat img = cv::imread(imagename); // Matlab风格的 cvLoadImage 函数的另一种调用
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}

if( !img.data ) // 检查是否正确载入图像
return -1;

cv::namedWindow("image", CV_WINDOW_AUTOSIZE); //创建窗口
cv::imshow("image", img); //显示图像

cv::waitKey();//程序停止直到键盘有输入

//显示avi视屏
// cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);
// CvCapture *capture = cvCreateFileCapture("tree.avi");
// IplImage *frame;
// while (1)
// {
// frame = cvQueryFrame(capture);
// if (!frame)break;
// cvShowImage("Example2",frame);
// char c = cvWaitKey(100);
// if (c == 2700) break;
// }
// cvReleaseCapture(&capture);
// cvDestroyWindow("Example2");
return 0;
}

回答3:

使用cvWaitKey();函数,OpenCV里面如果要用cvShowImage();函数必须使用cvWaitKey();函数才能正常显示,这是很多OpenCV初学者经常遇到的问题。另外,如果你要显示视频,也必须调用cvWaitKey();函数,只是时间定为一个较小的值,如10,否则图像显示像卡住一样一帧一帧的显示。

回答4:

我觉得是你没有把图像放到正确的路径,程序没有找到。
默认的是放在工程文件夹里一个跟工程同名的文件夹里

回答5:

预览里有没有?

回答6:

编译通过并不代表你的代码和设置就OK,我在单片机也遇到过类似问题还需你自己发掘