使用openCV和java从图像中提取Android圆形区域



我正在尝试分割图像中的圆形区域,并尝试读取圆形区域中像素的RGB值。有人能给我推荐一个教程吗,在openCV中使用java为android完成这项工作?

我建议如下:

假设你知道圆形区域的中心(x,y)和半径r,找到包围圆形的正方形的子块,即它将有点tl=(x-r,y-r),br=(x+r,y+r):

Rect roi = new Rect(new Point(x-r, y-r,), new Point(x+r, y+r));
Mat boundingSquare = originalImage.submat(roi);

然后,您可以遍历该子图中的每个点,并测试它们是否在圆中。因此,对于子集合中的每个点(a,b)(记住现在将具有左上角点(0,0)和右下角点(2r,2r)),检查(a-r)(a-rr*r。

一种稍微不同的方法(假设你的点值是正的)是创建一个掩码Mat,比如在圆圈内值为1,在圆圈外值为-1(使用上面相同的技术);然后,您可以使用Core.multiply用您的boundingSquare(或者更准确地说是它的克隆)对遮罩进行多重化。然后,boundingSquar将在圆内具有正值,在圆外具有负值。以这种方式应用掩码将比扫描单个像素值更快。

最新更新