OpenCV for Android:Bitmap为null(bmp == null)

时间:2015-02-28 12:01:23

标签: android android-bitmap opencv4android

我正在尝试将图像加载到位图中,以便我可以在相机框架上进行一些处理,但是当我尝试使用静态图像时,我一直得到bmp == null。 这是我的代码:

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        File file = new File(path,"/myopencv/myimage.bmp");
    if (file.exists()) {
        objectbmp = BitmapFactory.decodeFile(path);
        object = new Mat();
        Log.e("Get frame","next line generates the error: bmp == null");
        Utils.bitmapToMat(objectbmp, object);
       }
  }

所以我使用Eclipse向物理设备打开DDMS。我在/ storage / sdcard0 /中创建了一个新文件夹myopencv。然后我使用Eclipses工具将myimage.bmp文件放在那里(将文件推送到设备上)。 所以文件显然存在。 我也测试它,看文件是否存在,它似乎存在。 那为什么它是空的? 我怎样才能正常工作?

1 个答案:

答案 0 :(得分:0)

如果您的文件确实存在,我只能猜测objectbmp无效。Docs说:

  

bmp - 是“ARGB_8888”或类型的有效输入Bitmap对象   'RGB_565'。

为什么不使用Highgui.imread?文件说:

  

从文件中加载图像。

     

函数imread从指定文件加载图像并返回   它。如果图像无法读取(因为文件丢失,不正确   权限,不支持或无效格式),该函数返回一个   空矩阵(Mat.data == NULL)。目前,以下文件格式   支持:

     

Windows位图 - * .bmp,* .dib(始终支持)JPEG文件 - * .jpeg,   * .jpg,*。jpe(参见 Notes 部分)JPEG 2000文件 - * .jp2(参见 Notes 部分)便携式网络图形 - * .png(参见    Notes 部分)便携式图像格式 - * .pbm,* .pgm,* .ppm(始终支持)Sun栅格 - * .sr,* .ras(始终支持)TIFF文件 -   * .tiff,* .tif(参见注释部分)