注:適用於python2及Opencv2
前幾天安裝了Opencv,與我的Anaconda配合使用,今天想測試一下Opencv下光流法的實現過程,但是第一步就卡在了視頻讀取上面,相信很多童鞋都遇到過類似錯誤。解決了這個問題之後,又去跑官網給的光流法示例程序,結果這段程序總是報錯:
cv2.imshow('frame',img)
同樣滴,又屁顛屁顛去網上找決絕方案(小白傷不起~),最後勉強搞定。總的感覺就是網上的解決方案很多很雜,並不對每一個人都適用。這兩個問題在stackoverflow上的解決方案比較完整,國內很多都是借鑑他們的,只不過英文可能讓部分童鞋望而卻步,但還是建議看一看,畢竟完整一些。
第一個問題,讀取視頻文件出錯,要修改動態鏈接庫(dll)文件名和添加系統運行路徑,詳見:http://stackoverflow.com/questions/11699298/opencv-2-4-videocapture-not-working-on-windows。輔以:http://blog.csdn.net/heyijia0327/article/details/44034671。
第二個問題,運行示例代碼時那段代碼總報錯,原因官方給的代碼可能庫的版本不一樣,所以上面有兩行代碼是不適用的:
mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
改爲:
#drawing is inplace replacement, line() and circle() will return None!
cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
詳見:http://stackoverflow.com/questions/11699298/opencv-2-4-videocapture-not-working-on-windows。
希望能給同伴小白們提供幫助。