2013-03-27 130 views
0

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

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

enter image description here

所以希望现在你们有一个更好地了解........

这里我的问题是我怎么得出这样的从起始位置到结束位置的行将其存储在向量中以分析它...?

我对绘制线的各种功能做了一些研究,但其中没有一个功能似乎适合我的目的。下面是一些研究链接:

Opencv Draw Line & Line iterator & poly lines

又看了看弧长,fitLine,CLIPLINE & Hough变换

能有人指出我该技术将最适合我的目的......? 一些好读,例子,或者只是建议如何甚至开始这整件事

问候我希望我的问题是深受现在

+0

你需要上边框的红色中心与相应的红色中心连接下边框? – 2013-03-27 13:28:42

+0

是顶部点是视频序列中的可能移动,底部点表示起始位置,顶部中心点表示手势的结束。我想连接这些分析线的角度和长度来区分可能的手势 – Tomazi 2013-03-27 15:27:05

回答

1

店了解重心位置一帧一帧的对象被跟踪在一个数组中,然后将其提供给PolyLines()函数。

+0

ok thx为您的答案:我已经存储过中帧的中心位置我正在使用此算法来计算并将其存储在点变量中,也(oko [0] .x +(oko [0] .width/2),oko [0] .y +(oko [0] .height/2));这是在一个无限循环内。 cout <<“中心点框:0是:”<< center << endl; circle(drawing,center,3,Scalar(255,255,255),CV_FILLED);' – Tomazi 2013-03-27 15:02:46

+0

现在我查了折线[这里] http://docs.opencv.org/modules/core/doc/drawing_functions.html但现在我是不确定如何使用这个功能.....你能建议一些体面的阅读或提供一些例子....? – Tomazi 2013-03-27 15:04:39

0

我们可以用折线如下:

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); 
该点必须被定义为垫

- 付费注意