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。
我有一个 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。