尝试使用Highgui.imread加载图像(OpenCV + Android)

时间:2012-05-25 10:13:35

标签: java android opencv image-processing

我尝试加载图片:

    File root = Environment.getExternalStorageDirectory();
    File file = new File(root, "image.gif");
    Mat m = Highgui.imread(file.getAbsolutePath());
    if(file.exists()){
        showToast("Height: " + m.height() + " Width: " + m.width());
    }

但是尺寸= 0(高度/宽度)。

2 个答案:

答案 0 :(得分:5)

文件存在的事实并不意味着OpenCV能够读取其内容。

你应该做的是:

Mat m = Highgui.imread(file.getAbsolutePath());
if (img.data)
{
     showToast("Height: " + m.height() + " Width: " + m.width());
}
else
{
     // print error and abort execution
}

imread()的文档末尾有一个很重要的说明如下:

  

该功能通过内容而不是文件扩展名确定图像的类型。

在继续操作之前,您应该检查文档。确保您可以编写一个简单的OpenCV应用程序,在更复杂的东西冒险之前加载并显示磁盘上的图像。

答案 1 :(得分:-2)

尝试使用

IplImage orgImage= cvLoadImage(fileName); 

它正在使用JavaCV包装器。但我不会不会在纯OpenCV上工作。