OpenCV3.0 - Imgcodecs.imread返回空文件

时间:2016-07-05 15:38:06

标签: android opencv imread

我是OpenCV的新手 - 在Android上使用OpenCV310。

当我在存在的文件上调用 Imgcodecs.imread 时,我总是得到一个空的Mat。 有人可以帮助我吗?

代码是:

File root = Environment.getExternalStorageDirectory();
File file = new File(root, "1.jpg");
Log.e(getString(R.string.app_name), "File exists: " + file.exists());
Log.e(getString(R.string.app_name), "Trying to read: " + file.getAbsolutePath());
Mat BGRMat = Imgcodecs.imread(file.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_COLOR);
if(BGRMat.empty())
{
      Log.e(getString(R.string.app_name), "Failed, Empty! Details: " + BGRMat);
}
else
{
      Log.e(getString(R.string.app_name), "Success! Details: " + BGRMat);
} 

我得到的日志是:

  


07-05 20:53:26.941 28555-28555 / com.sunshine.spotdetector   E / SpotDetector:文件存在:真实07-05 20:53:26.941   28555-28555 / com.sunshine.spotdetector E / SpotDetector:试着读:   /storage/emulated/0/1.jpg
07-05 20:53:26.941   28555-28555 / com.sunshine.spotdetector E / SpotDetector:失败,空!   详细信息:Mat [0 * 0 * CV_8UC1,isCont = false,isSubmat = false,   nativeObj = 0x7f97b2a660,dataAddr = 0x0]

提前致谢!

1 个答案:

答案 0 :(得分:0)

让我回答我自己的问题。这是一个愚蠢的错误: 我忘了添加android.permission.READ_EXTERNAL_STORAGE, 所以它返回0大小的Mat