使用dense_flow求取圖像的光流圖像,原項目地址: https://github.com/wanglimin/dense_flow
該方法使用的是opecnv最基本的光流圖像計算方法,輸出為 flow_x 和flow_y 兩個圖像。
因為輸入同程序要求不同(視頻 -> 連續幀圖像),因此對程序進行部分修改,大體相同。
對該程序的編譯方法為:
假設程序的目錄為:$ROOT_DENSE
在對該程序進行編譯之前應該首先在CMakelist里面修改要進行編譯的源文件。
將第5, 6行修改為:
add_executable( denseFlow denseFlow.cpp ) target_link_libraries( denseFlow ${OpenCV_LIBS} )
接下來對程序進行編譯:
cd $ROOT_DENSE mkdir build cd build cmake .. make
注: 在使用該方法時,需要使用opecnv2.4.X版本,推薦使用2.4.10版本,如果已經安裝opencv更高版本,如3.0,需要對其進行修改。
(因3.0中有bug,所以在處理圖像數據過程中可能會出現問題),bug分析見:http://stackoverflow.com/questions/31996367/opencv-resize-fails-on-large-image-with-error-215-ssize-area-0-in-funct
當需要進行resize的圖像長度大於2^31時,ssize.area()返回值為負值。因此需要注釋掉下面語句:
CV_Assert( ssize.area() > 0 )
對於圖像的高度height 大於寬度width 的圖像,需要對該語句進行注釋:
CV_Assert( dsize.area() > 0 )
如果在項目開發中需要使用不同版本的opencv,那么對不同版本opencv管理方法見:Ubuntu下多個版本OpenCV管理(Multiple Opencv version)