【发布时间】:2014-11-04 19:55:12
【问题描述】:
在我的 android 应用程序中,我从图库中获取图像作为位图,其中包含类似的内容
Bitmap bitm = getMyImage("Thanks!");
我有一个名为 mat 的 Mat 声明如下:
Mat mat = new Mat(bitm.getHeight(), bitm.getWidth(), CVType.CV_8UC3);
我正在尝试从图像中获取轮廓区域,我已成功获取,然后将其绘制回原始图像:
Imgproc.drawContours(mat, contours, -1, new Scalar(200,200,0), 2);
displayMat(mat);
如果我这样使用它,它可以工作,但轮廓是在一个空白图像上绘制的,这不是我想要的。我希望它被绘制在原始图像上。如果我使用
Utils.bitmapToMat(bitm, mat);
在前面的 sn-p 代码之前,显示的图像只是没有“绘制”轮廓的预处理图像。为什么?
【问题讨论】:
-
我还没有使用 android opencv,但我想我在某处读过他们使用 8UC4 图像?!?所以
new Scalar(200,200,0)也需要一个 alpha 值。否则它使用默认的 alpha 值,我猜这将是透明的。所以把Utils.bitmapToMat(bitm, mat);放在你的代码之前,然后把Scalar(200,200,0,255)或者Scalar(200,200,0,0)改成不透明的alpha值。 -
@Micka 谢谢!这就是它没有出现的原因。如果您留下您的评论作为答案,我一定会接受它:)