如何从密集光流中提取速度矢量?
问题:我正在尝试对齐移动视频的两个帧。
我目前正在尝试使用函数“cvCalcOpticalFlowLK”,结果以“CvArr”的形式输出x和y的速度向量。
所以我得到了结果,但我不知道如何使用这些向量数组。
我的问题是这个......我怎么知道每个像素的速度是多少? 它只是该特定点上每个像素值的值吗?
注:我会使用其他光流功能,如cvCalcOpticalFlowPyrLK(),因为它更容易,但我想要密集的光流。
显然,我原来的假设是真实的。 光流函数的“velx”和“vely”输出是每个像素值的实际速度。 为了最好地提取它们,我访问了原始数据中的像素并提取了该值。 有两种方法可以做到这一点。
cvGet2D() - 这种方式比较慢,但如果你只需要访问1个像素就没问题。
要么
(uchar *)(image-> imageData + height * image-> widthStep + width);
(图像是IplImage,宽度和高度只是图像的相应宽度和高度)
如果你需要每个像素的运动矢量,那么你需要计算所谓的“密集光流”。 从openCV 2.1开始,有一个函数可以做到:calcOpticalFlowFarneback。
请参阅下面的链接:http://opencv.itseez.com/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=calcopticalflowfarneback#cv2.calcOpticalFlowFarneback
velx和vely是光流而不是实际速度。 您使用的方法已过时。 使用这个calcOpticalFlowFarneback()
链接地址: http://www.djcxy.com/p/43753.html上一篇: How to extract velocity vectors from dense optical flow?