問題:我正在嘗試對齊移動視頻的兩個幀。如何從密集光流中提取速度矢量?
我正在嘗試使用函數「cvCalcOpticalFlowLK」,結果以「CvArr」的形式輸出x和y的速度向量。
所以我得到了結果,但我不知道如何使用這些向量數組。
我的問題是這個......我怎麼知道每個像素的速度是什麼?它只是該特定點上每個像素值的值嗎?
注意:我會使用其他光流功能,如cvCalcOpticalFlowPyrLK(),因爲它更容易,但我想要密集的光流。
問題:我正在嘗試對齊移動視頻的兩個幀。如何從密集光流中提取速度矢量?
我正在嘗試使用函數「cvCalcOpticalFlowLK」,結果以「CvArr」的形式輸出x和y的速度向量。
所以我得到了結果,但我不知道如何使用這些向量數組。
我的問題是這個......我怎麼知道每個像素的速度是什麼?它只是該特定點上每個像素值的值嗎?
注意:我會使用其他光流功能,如cvCalcOpticalFlowPyrLK(),因爲它更容易,但我想要密集的光流。
顯然我原來的假設是真的。光流函數的「velx」和「vely」輸出是每個像素值的實際速度。爲了最好地提取它們,我訪問了原始數據中的像素並提取了該值。有兩種方法可以做到這一點。
cvGet2D() - 這種方式比較慢,但如果你只需要訪問1個像素就沒問題。
或
(UCHAR *)(圖像 - >的imageData +高度*圖像 - > widthStep +寬度);
(圖像是IplImage結構,寬度和高度都只是相應的寬度和圖像的高度)
如果需要的運動向量對於每個像素,那麼就需要計算什麼所謂「緻密光流」 。從openCV 2.1開始,有一個函數可以做到:calcOpticalFlowFarneback。
velx和vely是光流不實際速度。 您使用的方法已過時。使用這個calcOpticalFlowFarneback()
所以我一直在玩弄所得到的圖像,我會假設每個像素值代表每個像素的速度,但是在什麼單位測量的準確性? 有誰知道這些「速度值」如何對應該像素的速度? 它是每幀的像素?或者是其他東西? 每個像素的值是在32位浮點。 – monky822 2009-12-11 23:40:45