第一个问题 在cvShowImage显示图像后,需要加一个暂停语句cvWaitKey(0),即按键后程序才继续运行,如果不暂停,程序运行完毕后将关闭窗口,所以形成你所说的问题;
补充问题:这个你得自己找原因了,单步运行程序,发现出现异常的地方,然后分析错误
不知道你的代码如何,无法分析。
这下面的代码在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;
}
使用cvWaitKey();函数,OpenCV里面如果要用cvShowImage();函数必须使用cvWaitKey();函数才能正常显示,这是很多OpenCV初学者经常遇到的问题。另外,如果你要显示视频,也必须调用cvWaitKey();函数,只是时间定为一个较小的值,如10,否则图像显示像卡住一样一帧一帧的显示。
我觉得是你没有把图像放到正确的路径,程序没有找到。
默认的是放在工程文件夹里一个跟工程同名的文件夹里
预览里有没有?
编译通过并不代表你的代码和设置就OK,我在单片机也遇到过类似问题还需你自己发掘