是否有任何 C++ opencv 代码来计算每帧视频中关键特征点的速度? [关闭]

Posted

技术标签:

【中文标题】是否有任何 C++ opencv 代码来计算每帧视频中关键特征点的速度? [关闭]【英文标题】:Is there any C++ opencv code to compute velocity of key feature points in each frame of video? [closed] 【发布时间】:2015-09-25 05:38:11 【问题描述】:

我想计算关键特征点的速度并为视频中的运动检测设置阈值。

我有一个python代码如下:

def compute_vel_kf(self, fps):

   if ((len(self.features) == 0) or (self.features == None)):
        return;
   test_image = self.current_frame.copy();

    time_diff_in_sec = 1/fps;
    self.v = [];

    for i, p1 in enumerate(self.features):
        p2 = self.features_prev[i];
        # speed = dist/time
        vx, vy = [(p1[0][0] - p2[0][0]), (p1[0][1] - p2[0][1])];           
        v = sqrt(vx * vx + vy * vy)*fps;
        ang = math.atan2(vy, vx);
        self.v.append(array([v, ang]));           
        i += 1;

    return self.v;

我必须将它移植到 cpp 代码。在 cpp 代码中,我使用了 points[1] 和 points[2] 分别保存当前帧和前一帧检测到的点。我需要计算检测到的关键特征点的速度。

【问题讨论】:

嗨,欢迎来到 ***。请向我们展示您到目前为止所做的工作,您是否有特定编程问题我们可以帮助您解决? 什么是“帧的速度”?? 【参考方案1】:

正如 Tobbe 所提到的,您应该首先尝试使用样本数据获得一些结果,然后就您所拥有的以及接下来需要什么寻求帮助。

为了给出一个简短的答案,您应该首先安装一个像 OpenCV 这样的图像处理库,然后编写一些示例代码来加载和处理视频中的帧。然后您可以在第一帧中分割对象,在接下来的帧中跟踪它们,并使用统计数据来计算速度。

编辑:现在我们可以看到你已经有了前一帧和当前帧的位置。以像素/秒为单位获取速度的常用方法是计算两个位置之间的距离(欧几里得或单独的轴,取决于您的需要),然后将其乘以帧速率。但是,由于视频很可能每秒拍摄许多帧,因此您也可以使用前一帧对的速度进行加权平均。

【讨论】:

这个问题在我回答后已经被编辑,我的回答是在那个状态下的问题:-|。 那么 Ash 应该将他的问题部分标记为“编辑”。对不起。 sry 我是 *** 的新手。我不知道“编辑”。

以上是关于是否有任何 C++ opencv 代码来计算每帧视频中关键特征点的速度? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否有使用 opencv 和 travis ci 的 c++ 示例项目?

分布在多个帧中的 C++ 中的排序

是否有一个公式来确定给定 BGR 值的整体颜色? (OpenCV 和 C++)

使用 Opencv 时 C++ 调试断言失败

OpenCV读取图片判断读取是否成功显示图片的代码(C++代码和Python代码)

OpenCV + visualStudio,尝试访问像素的 C++ 代码错误