2013-07-28 97 views
0

我想将图像加载到OpenCV的窗口上,但我一直在得到一个断点Imshow。这是我从教程中学到的代码。加载图像Opencv

 namedWindow("result", CV_WINDOW_AUTOSIZE); 

    Mat image ; 
    // image = imread("Particle", 1); 
    String inputName; 

    for(int i = 1; i < argc; i++) 
    { 
     inputName.assign(argv[i]); 
    } 
    if(inputName.empty() || (isdigit(inputName.c_str()[0]) && inputName.c_str()[1] == '\0')) 
    { 
     if(inputName.size()) 
     { 
      image = imread("Particle.png", 1); 
     } 
     else 
     { 
      if(image.empty()) cout << "Couldn't read image" << endl; 
     } 
     imshow("result",image); 

} 
+0

什么信息与你的“断点”来?你有没有进入“无法读取图像”的条件?如果是这样,可能解释了为什么imshow崩溃了......将自己的断点放在imshow行,在调试配置中运行应用程序,然后检查变量。 – CTZStef

+0

信号SIGABRT是断点。我也得到一个字符串imgpath = ... –

+0

Abort()调用一些内部错误。你知道如何调试程序吗?我的猜测是你不会在命令行中给你的程序提供正确的输入。 – CTZStef

回答

1

哦,亲爱的,不知道在哪里,你发现,“教程”,但它赚了不少“特殊”的假设存在,可能不适合你的实际情况

尝试一些更简单,而不是:

int main(int argc, char **argv) { 
    string imgpath = argv[1]; // call me : prog imgpath [on the cmdline] 
    Mat m = imread(imgpath); 
    imshow("lala", m); 
    waitKey(0); 
}