【问题标题】:OpenCV C++ Drawing and Analyzing LineOpenCV C++ 绘图和分析线
【发布时间】:2013-03-28 00:02:16
【问题描述】:

我正在开发一个 OpenCV 程序,该程序能够检测拳击手的出拳并对其进行分类。目前我的程序经历了所有不同的图像处理,查找和检测轮廓,在 ROI(感兴趣区域)上绘制边界框,我还在计算每个边界框的一些属性,例如:区域和中心点。

现在我想做的是从每个边界框从中心点开始画一条线,并分析该线的角度和长度。看一下说明我的目标的图片:

所以希望现在你们有一个更好的概述............

我的问题是如何从起始位置到结束位置绘制这样的线,将其存储在向量中以进行分析...?

我对绘制线条的各种函数进行了一些研究,但似乎没有一个适合我的目的。以下是一些研究链接:

Opencv Draw Line & Line iterator & poly lines

还查看了 arcLength、fitLine、clipLine 和 Hough 变换

谁能告诉我哪种技术最适合我的目标...? 一些很好的阅读,例子,或者只是建议如何开始这整个事情

问候 希望我的问题现在已经很好理解了

【问题讨论】:

  • 是否需要将上边界框的红色中心与下边界框对应的红色中心连接起来?
  • 是的,最高点是视频序列中可能的运动,最低点表示起始位置,最高点表示手势的结束。我想将这些连接起来分析线条的角度和长度以区分可能的手势

标签: c++ opencv


【解决方案1】:

将被跟踪对象的质心位置逐帧存储在数组中,然后将其提供给 PolyLines() 函数。

【讨论】:

  • 好的,谢谢你的回答:我已经在每一帧中存储中心位置我正在使用这个算法来计算并将它存储在一个点变量中,这也是一个无限循环,Point center = Point(oko[0].x + (oko[0].width/2), oko[0].y + (oko[0].height/2)); cout<<"Center Point of Box: 0 is: " <<center<<endl; circle(drawing, center, 3, Scalar(255,255,255), CV_FILLED);
  • 现在我在 [这里]docs.opencv.org/modules/core/doc/drawing_functions.html 查找折线但现在我不确定如何使用此功能.....您能否建议一些体面的阅读或提供一些示例.... ?
【解决方案2】:

我们可以如下使用折线:

polylines(img  /*image where to plot*/, &points /*the points (centroids in your case)*/ ,&numPoint /*number of points*/,1,false /*contour is not closed shape*/, Scalar(255,255,255),3, CV_AA, 0);

-注意点必须定义为Mat

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 2022-11-08
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多