安卓上的 OpenCV,Mat.rows() = 0
Posted
技术标签:
【中文标题】安卓上的 OpenCV,Mat.rows() = 0【英文标题】:OpenCV on android, Mat.rows() = 0 【发布时间】:2018-09-28 19:26:11 【问题描述】:我有一个 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。
【问题讨论】:
很可能imread
失败了,因为发生这种情况时它会返回一个空图像。
我怎么知道?我应该如何着手修复它?谢谢,洛伦佐
调用Mat
的empty
方法。
【参考方案1】:
问题是我向imread
传递了错误的URI,因此失败并返回了一个空的Mat。正如Dan Mašek 建议的那样,我调用了empty
方法,该方法返回了true
,但我发现我传递了错误的URI。
【讨论】:
以上是关于安卓上的 OpenCV,Mat.rows() = 0的主要内容,如果未能解决你的问题,请参考以下文章