2009-12-10 43 views
7

問題:我正在嘗試對齊移動視頻的兩個幀。如何從密集光流中提取速度矢量?

我正在嘗試使用函數「cvCalcOpticalFlowLK」,結果以「CvArr」的形式輸出x和y的速度向量。

所以我得到了結果,但我不知道如何使用這些向量數組。

我的問題是這個......我怎麼知道每個像素的速度是什麼?它只是該特定點上每個像素值的值嗎?

注意:我會使用其他光流功能,如cvCalcOpticalFlowPyrLK(),因爲它更容易,但我想要密集的光流。

+0

所以我一直在玩弄所得到的圖像,我會假設每個像素值代表每個像素的速度,但是在什麼單位測量的準確性? 有誰知道這些「速度值」如何對應該像素的速度? 它是每幀的像素?或者是其他東西? 每個像素的值是在32位浮點。 – monky822 2009-12-11 23:40:45

回答

4

顯然我原來的假設是真的。光流函數的「velx」和「vely」輸出是每個像素值的實際速度。爲了最好地提取它們,我訪問了原始數據中的像素並提取了該值。有兩種方法可以做到這一點。

cvGet2D() - 這種方式比較慢,但如果你只需要訪問1個像素就沒問題。

(UCHAR *)(圖像 - >的imageData +高度*圖像 - > widthStep +寬度);

(圖像是IplImage結構,寬度和高度都只是相應的寬度和圖像的高度)