光流-运动直方图
Optical Flow - Motion histograms
我目前正在使用OpenCV C++开发光流。我使用的是带有点网格的calcOpticalFlowPyrLK(=每个5*5像素的正方形有一个兴趣点)。
哪种方法最好:
1) 计算每个帧的计算值(方向和距离)的直方图
2) 计算给定像素在几个帧(例如100)期间所取值(方向和距离)的直方图
OpenCV的功能是否适合这项工作?如何以简单的方式将它们与calcOpticalFlowPyrLK结合使用?
几个月前,我还在搜索相同的OpenCV工具。不幸的是,OpenCV不包括任何运动直方图实现。相反,您应该为每个帧运行calcOpticalFlowPyrLK,并计算每个位移的方向/长度。然后,您必须自己创建/填充直方图。没有听起来那么难,相信我:)
HOOF第一部分的OpenCV实现可以如下所示:
const int rows = flow1.rows;
const int cols = flow1.cols;
for (int y = 0; y < rows; ++y)
for (int x = 0; x < cols; ++x)
{
Vec2f flow1_at_point = flow1.at<Vec2f>(y, x);
float u1 = flow1_at_point[0];
float v1 = flow1_at_point[1];
magnitudeImage += sqrt((u1*u1) + (v1 + v1));
orientationImage += atan2(u1, v1);
}
相关文章:
- 粒子系统:所有粒子都朝同一方向运动
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 如何组合许多连续的图像来模拟逼真的运动模糊?
- 太空入侵者 – 2D 矢量运动算法
- 在虚幻引擎中使用运动控制器组件,C++而不是蓝图
- 二进制图像的空间直方图
- OpenCV的卡尔曼滤波器过渡矩阵如何处理时间(如t和t^2)进行运动预测?
- 如何在c++中仅使用for循环打印此代码的垂直直方图
- 创建直方图以显示每个类别/箱中带有星号的项目数量
- 打印带C++的直方图
- 将直方图的 2D 数组传递给函数 (C++)?
- 如何使用OpenCV作为运动检测器(而不是寻找视频输出)
- 如何在OpenCV 3.4.7中计算CV_32FC1 cv::GpuMat图像的(范围)直方图
- 如何平行化直方图添加?
- 一维阵列的运动检测(神经网络或其他选项?
- 使用带有 PIR 传感器的米利斯检测连续运动
- 根C++直方图中的错误
- 动态分配许多 Boost::直方图对象
- 使用 OpenCV 原始指针和 lambda 作为直方图的不同结果
- 光流-运动直方图