我正在尝试制作一款具有图像处理功能的Android应用程序。如何使用位图简单地将轮廓线与具有相似颜色的像素放在一起?
我见过这个video,但它是实时处理,显示轮廓线。我想在我的应用程序中使用静态图像,并显示具有相似颜色的像素的轮廓线。
答案 0 :(得分:1)
首先,您应该考虑一个图像处理库来为您完成工作!我认为OpenCV是一个不错的选择。然后加载图像,将其转换为HSV空间并应用inRange
的颜色阈值。在结果图片中,您使用findContours
检测轮廓,并使用drawContours
或polylines
绘制轮廓。完成!
修改强>
转换输入图片,例如RGB到hsv:
Imgproc.cvtColor(rgb,hsv,Imgproc.COLOR_RGB2HSV);
定义上限和下限值!查看HSV色轮并选择正确的范围。请注意,HSV已适合3个8位通道,但H通道不适合,因此必须将此值除以2.在OpenCV中,H的范围为0-180。 这是红色的例子:
Scalar lower(0,100,100);
Scalar upper(10,255,255);
Core.inRange(hsv, lower, upper, segmentedImage);
然后使用:
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Mat hierarchy = new Mat();
Imgproc.findContours(segmentedImage, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
现在你可以遍历每个轮廓并做一些事情!