是否有任何 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++ 示例项目?
是否有一个公式来确定给定 BGR 值的整体颜色? (OpenCV 和 C++)