opencv 统计圆内的像素点算法

已知图像中某个圆的的坐标和半径,想统计该圆内的有多少个像素值等于0的点?

圆的的中心为(x0,y0),半径为R.

依据这个的方程,,当坐标满足sqrt((x-x0)^2 + (y - y0)^2 )<= R 时,说明这个点在圆内,

然后累计求出总数即可。

遍历点的时候不能都遍历整个图像。而应该遍历以长度也就是边长为2R的正方形的所有像素这样更节省时间。



int Radius = 4;
int nRow = Radius*2;
int nCol = Radius;
int startX = Xr;
int startY = Yr ;
int cnt =0;

int rr = Radius;
int m,n;
for ( m = startY-rr; m < startY+rr; m++)
{

//从左到右的列也就是x坐标
for ( n = startX; n < (startX + nCol); n++)
{
     uchar data = img3.ptr<uchar>(m)[n];
    printf("(%d,%d):%d \n",m,n,data);

}

sitemap