OpenCV-测量;“增长”;物体的形状

OpenCV-测量;“增长”;物体的形状,c,opencv,C,Opencv,我想寻求一些关于OpenCV的帮助(我目前是OpenCV的初学者) 我打算测量一个物体在两帧之间的生长或运动 例如: _ _ = = = = = = = = = = =

我想寻求一些关于OpenCV的帮助(我目前是OpenCV的初学者)

我打算测量一个物体在两帧之间的生长或运动

例如:

                                          _  _
         =  =                          =        =
      =        =                     =            =
     =          =                   =              =
     =          =                   =              =
      =        =                     =            =
         =  =                          =        =
                                          ~  ~                
第一帧包含一个带白色背景的黑色圆圈

第二帧包含一个带有白色背景的较大圆圈

我想做的是获取圆的坐标(我不确定OpenCV中有哪些函数允许我分割圆并检索圆的坐标)。然后减去坐标,这样我就可以测量圆的增长

我试着浏览了一些教程,但没有找到任何关于分割对象(如圆)然后将其坐标打印或写入文件的讨论

是否可以使用OpenCV执行类似操作,或者我需要其他软件解决方案

谢谢大家。

在OpenCV中,您可以:

  • 使用特征检测算法(如Canny算法)提取边缘
  • 从该边缘图像中,可以使用CV的snake算法
    cvSnakeImage()
    ,该算法将图像作为输入并计算一组点
  • 使用这组点作为函数
    cv::mineConclosingCircle()
    的输入,该函数将返回圆的直径
  • 在下一张图像上重复,并比较圆环的大小
  • 特征检测文件: 结构/形状描述符文档:

    也许你也可以使用光流(虽然我不熟悉,所以我不确定)

    编辑(回复评论):

    函数
    CVMineConclosingCircle()。如果您知道您正在比较同一对象的不同比例,则此度量是有意义的(因为对象的所有部分将同时增长或收缩,从而“推动”或“收缩”外接圆)

    但实际上有一种更简单的方法:比较每幅图像中黑色像素的数量,它们代表区域


    或者,您可能对使用另一个专门用于分段的库感兴趣,例如ITK。

    Jlemaitre,感谢您的快速响应。我将研究Canny和Snake算法。对不起,关于第3点还有一个问题。如果我打算将这些技术应用于不同的形状,例如正方形或多边形,是否还有其他函数可以返回它们的坐标?再次感谢。