我試圖做這樣的事情: http://www.youtube.com/watch?feature=player_embedded&v=MIYt1yNwoZU光流:幾點
,我在正確的道路,它的工作原理以及2小時的編碼。但我有一些問題:
我使用的是opencv 2.4,並且有一些選項..請參閱here。哪一個是最好的?盧卡斯kanade與一些自動功能檢測?或者一個簡單的全球定位就足夠了?甚至卡爾曼濾波器?現在我正在使用一種密集的法爾內貝爾算法,我認爲它是第一個(更簡單)的選項,但也許並不是最好的選擇。
在計算了圖像上的光流後(因爲計算光流的因子爲2,因爲這是一項艱鉅的工作),我取這些矢量的平均值。正常平均值,將它們相加併除以矢量數。所以在流動墊上嵌套循環。更好的方法?
Point2f average_motion(0,0); float n=1; for(int y = 0; y < flow.rows; y += step) for(int x = 0; x < flow.cols; x += step) { const Point2f& fxy = flow.at<Point2f>(y, x); if(abs(fxy.x) > threshold || abs(fxy.y) > threshold) { average_motion += fxy; n++; } } average_motion *= 1/n; average_motion *= 1/n; cout << average_motion << endl;
我移動rects但左/右移動似乎有點有點不可思議,而不是向上/向下作品真的很好!有人可以解釋我爲什麼?
翻譯是好的,但我卡在旋轉..如果我得到的平均向量我怎麼能獲得學位?我嘗試過使用X軸向量之間的角度,但是效果不好。一些提示?
現在我畫的東西跟OpenCV的繪圖API,但是從2.4也有OpenGL的支持..而應該是不錯的,但我沒有找到例如對..
您是否嘗試過使用姿勢估計函數來獲得旋轉/翻譯?也許[estimatedRigidTransform](http://opencv.willowgarage.com/documentation/cpp/structural_analysis_and_shape_descriptors.html)? – Hammer