2011-09-27 83 views
0

我的C++ opencv程序有问题。它应该显示我加载的图片,但调试后只会弹出一个灰色的窗口。这是我的代码:显示图像第二版

#include <cv.h> 
#include <highgui.h> 
int main(int argc, char* argv[]) 
{ 
    IplImage* img = cvLoadImage("IMG_7321_.jpg"); 
    cvNamedWindow("IMG_7321_", CV_WINDOW_AUTOSIZE); 
    cvShowImage("IMG_7321_", img); 
    cvWaitKey(0); 
    cvReleaseImage(&img); 
    cvDestroyWindow("IMG_7321_"); 

    return 0; 
} 

.jpg文件位于项目文件夹中。

有人可以告诉我,我必须做什么才能显示图片。帮助将非常感谢!

+0

你确定“release”行不应该是'cvReleaseImage(img);'? –

+0

@KerrekSB cvReleaseImage调用是正确的。它修改'img'变量,使其通过引用传递。 – SSteve

+0

@SSteve:如果要通过引用传递'img',为什么OP将它作为指针传递? –

回答

1

您应该检查是否成功加载文件。试试这个:

int main(int argc, char* argv[]) 
{ 
    IplImage* img = cvLoadImage("IMG_7321_.jpg"); 
    if (!img) { 
     fprintf(stderr, "Image not found\n"); 
     return -1; 
    } 
    cvNamedWindow("IMG_7321_", CV_WINDOW_AUTOSIZE); 
    cvShowImage("IMG_7321_", img); 
    cvWaitKey(0); 
    cvReleaseImage(&img); 
    cvDestroyWindow("IMG_7321_"); 

    return 0; 
} 
+0

让你们帮忙! – user967493

+0

对SSteve:我不能检查,因为命令窗口只打开几毫秒,然后立即关闭 - >我不能读取输出^^ – user967493

+0

到SSteve:我设法检查现在,没有“返回-1;”命令窗口保持打开^^(你知道为什么?)。我怎样才能让程序加载文件? (即时通讯如此抱歉,所有这些问题,但这东西是如此复杂,没有这样的记录中列出) – user967493

相关问题