android、Mat.rows() = 0 上的 OpenCV

OpenCV on android, Mat.rows() = 0

我有一个 Uri 指向我选择的图像。我想将图像存储在 Mat 变量中,编辑它并在 ImageView 中显示它。到现在为止,我只想将图像加载到 Mat 变量中并显示它,而不进行编辑。这是我的代码:

Uri uri = data.getData();

Mat image = Imgcodecs.imread(uri.getPath());

//several edits in future

Bitmap resultBitmap = Bitmap.createBitmap(image.rows(), image.cols(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(image, resultBitmap);
imageView.setImageBitmap(resultBitmap);

报错的行是Bitmap resultBitmap = Bitmap.createBitmap(image.rows(), image.cols(),Bitmap.Config.ARGB_8888);,说image.rows()image.cols()不能是0

逻辑上如果维度是 (0, 0) 就会报错,但我不明白为什么它们是 0。

问题是我将错误的 URI 传递给 imread,因此失败并返回一个空垫。正如 Dan Mašek 所建议的那样,我调用了 empty 方法,它返回了 true,我发现我传递了一个错误的 URI。