我正在尝试分割图像中的圆形区域并尝试读取圆形区域中像素的RGB值。有人可以参考我的教程,这是在使用java的openCV for android中完成的吗?
答案 0 :(得分:4)
我建议如下:
假设你知道圆形区域的中心(x,y)和半径r,找到限定圆的方形的submat,即。它将有点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);
然后,您可以浏览该子图中的每个点,并测试它们是否在圆圈中。因此,对于submat中的每个点(a,b)(记住现在将有左上角点(0,0)和右下角(2r,2r)),检查是否(ar)(ar)+(br) )(br)< = r * r。
稍微不同的方法(并且假设你的点值是正的)是在圆圈中创建一个值为1的掩蔽Mat,在外面创建-1(使用上面相同的技术);然后,您可以使用Core.multiply使用boundingSquare(或其克隆更准确)多次使用掩码。然后,boundingSquare将在圆圈内具有正值,在外部具有负值。以这种方式应用蒙版将比扫描单个像素值更快。