我有两个同心圆a和b,我从图像中检测到这些圆,我知道它们的半径。我想要的是两个同心圆之间的点,这样我就可以从这些点中提取RGB值。任何帮助将是有益的。

最佳答案

两个同心圆之间的点的索引(x, y)(中心(x_0, y_0),半径r_0, r_1r_1 > r_0)必须满足以下条件:

(x-x_0) * (x-x_0) + (y-y_0) * (y-y_0) >= r_0 * r_0
(x-x_0) * (x-x_0) + (y-y_0) * (y-y_0) <= r_1 * r_1

因此,当遍历图像的所有点时,您可以确定要处理的点:
for (int x=0; x<img.rows; x++)
{
   for (int y=0; y<img.cols; y++)
   {
       double dd = (x-x_0) * (x-x_0) + (y-y_0) * (y-y_0);
       if (dd < r_0 * r_0 || dd > r_1 * r_1)
         continue;

       // Do what you have to do with the points between the two circles
   }
}

关于c++ - OPENCV::查找两个同心圆之间的所有点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51305520/

10-11 21:07