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

问题描述:

我想分割图像中的圆形区域并尝试读取圆形区域中的像素的RGB值。可以让某人将我引导至教程,在此处是在使用java的android的openCV中完成的?使用openCV与java从图像中提取Android圆形区域

+0

您想如何显示圆形区域中的像素,以便阅读它们?例如,作为一个值的数组(r,g,b,x,y)?作为边界外的值设置为-1的边界方阵可能更容易返回。 – timegalore

+0

无论哪种方式都很好。我只是需要一些帮助,关于如何做到这一点。 – user3370118

我建议如下:

假设你知道中心(X,Y)和圆形区域的半径为r,查找约束圆方,即该子阵列。它将具有点TL =(XR,YR)峰,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); 

可以通过每个点在子阵列然后运行和测试它们是否在圈。因此,对于submat中的每个点(a,b)(现在记得有左上角的点(0,0)和右下角的(2r,2r)),检查是否(ar)(ar)+(br) (br)< = r * r。

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