OpenCV,两条曲线之间的区域

时间:2014-04-22 11:09:54

标签: python opencv image-processing

我在OpenCV中使用Python库。 问题是如何在两条曲线的单独roi区域中进行选择? 曲线由两个二次多项式定义。

enter image description here

我想在曲线1和曲线2之间限制的区域找到黑色像素的数量

1 个答案:

答案 0 :(得分:2)

您可以通过绘制ellipse来创建遮罩,但是您应该从等式中获得以下数据,

  • center - 椭圆的中心(这里我用的是图像中心)。
  • 轴 - 椭圆主轴大小的一半(这里我分别使用图像尺寸/ 2和图像尺寸/ 4)。
  • angle - 以度为单位的椭圆旋转角度(此处我使用0)
  • startAngle - 椭圆弧的起始角度(以度为单位)。 (这里我使用了0)
  • endAngle - 椭圆弧的终止角度(以度数为-180)

如果你得到两条曲线的上述数据,你可以简单地绘制厚度= CV_FILLED的ellipse

  1. 首先绘制颜色= 255的最大椭圆。
  2. 现在绘制第二个椭圆,颜色为=。
  3. 查看示例

       Mat src(480,640,CV_8UC3,Scalar(0,0,0));
       ellipse(src,Point(src.cols/2,src.rows/2), Size (src.cols/2,src.rows/2), 0, 0,-180,Scalar(0,0,255), -1,8, 0);
       ellipse(src,Point(src.cols/2,src.rows/2), Size (src.cols/4,src.rows/4), 0, 0,-180,Scalar(0,0,0), -1,8, 0);
    

    enter image description here

    如果要将其用作蒙版,则将其绘制在单个通道图像上。

    修改: -

    要查找该区域,请在上方绘制颜色= 255的单通道图像。

    然后使用countNonZero获取白色像素数。