gpt4 book ai didi

c - 对运动 vector 进行分组

转载 作者:行者123 更新时间:2023-11-30 14:24:56 25 4
gpt4 key购买 nike

我正在使用 -Lucas-kanade 算法通过 openCV 计算视频序列的光流。我得到了运动 vector 。现在我想将这些运动 vector 分组到一些簇中。我想将彼此靠近的 vector 分组在一起。像最近邻方法之类的东西。但我不知道如何实现同样的功能。任何帮助将不胜感激。

谢谢。

运行光流算法后,我使用 cvKMeans2() 对角点进行分组...

我将簇放在 vector clustercontainer 的 vector 中。现在我想在每个簇周围画一条边界线..我不知道该怎么做...如果有人知道请帮忙。

使用 openCV 手册中的以下代码,我在每个簇周围绘制圆圈..但我想绘制矩形而不是圆圈..任何主体请帮助我。

    for(int h = 0; h < clusterContainer.size(); h++ )
{

CvPoint pt1,pt2;
CvMat box[100];

pt1.x=(int)points->data.fl[h*2];
pt1.y=(int)points->data.fl[h*2+1];
cvCircle( frame1, pt1, 20, CV_RGB(255,255,0),4);

}

enter image description here

最佳答案

要从一组点获取边界矩形,您可以使用 OpenCV boundingRect()功能。另请注意类似的 fitEllipse()功能。

boundingRect
计算点集的右上边界矩形。

C++: Rect boundingRect(InputArray points)  
Python: cv2.boundingRect(points) → retval
C: CvRect cvBoundingRect(CvArr* points, int update=0 )
Python: cv.BoundingRect(points, update=0) → CvRect

参数:points – 输入2D点集,存储在std::vector或Mat中。
该函数计算并返回指定点集的最小右上边界矩形。

fitEllipse
围绕一组 2D 点拟合椭圆。

C++: RotatedRect fitEllipse(InputArray points)
Python: cv2.fitEllipse(points) → retval
C: CvBox2D cvFitEllipse2(const CvArr* points)
Python: cv.FitEllipse2(points) → Box2D

参数:points – 输入2D点集,存储在:

std::vector<> or Mat (C++ interface)
CvSeq* or CvMat* (C interface)
Nx2 numpy array (Python interface)

该函数计算最适合(在最小二乘意义上)一组 2D 点的椭圆。它返回椭圆内接于其中的旋转矩形。使用算法[Fitzgibbon95]。

关于c - 对运动 vector 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com