精華區beta C_and_CPP 關於我們 聯絡資訊
大家好,小弟不才,野人獻曝,大學開始摸索 OpenCV 時遇到很多困難 雖然用到現在還不到一年,但想把使用 OpenCV 的入門經驗整理一下, 希望可以幫到正要使用OpenCV的人 (PS.以 Windows, VC2008 為例) 1.開始 比較快的方法是下載已經包好的安裝檔 http://sourceforge.net/projects/opencvlibrary/files/ 截稿最新版本為 OpenCV-2.1.0-win32-vs2008.exe 若要常常更新,可使用SVN下載 https://code.ros.org/svn/opencv/trunk/opencv 以上兩者可以到 http://opencv.willowgarage.com/wiki/ 參考 2.使用SVN需要自己編譯,理論上更新後要重編譯 預設讀取攝影機是用 VFW & MIL 如果要使用基於 DirectShow 的 videoInput Library 可以到手動定義 HAVE_VIDEOINPUT 因為我需要修改程式碼,所以實際上我是重新下載 videoInput Library 的原始碼,修改後重編的。http://muonics.net/school/spring05/videoInput/ 如果沒有讀取速度上的需求,使用 VFW 也許比較簡單。 至於編譯用的專案可以用 CMake 還蠻方便的 http://www.cmake.org/ 3.看OpenCV目錄下的pdf文件和 sample 可以看看如何使用 OpenCV,目前 find_obj 範例基於 SURF 的方法有 bug 4.其他 Q&A Q.執行的時候找不到 dll? A.你可以設環境變數,命名為Path,指向OpenCV下或你編譯的資料夾下bin的資料夾 不過我認為最好的方式是把資料夾下的dll都複製到你執行檔所在目錄下, 這樣換到沒有OpenCV的電腦也能用。 Q.編譯找不到 ???.lib A.一般網路上建議的做法是在VC2008的設定加入連結路徑, 我覺得不妨選個穩定版本的lib複製到專案資料夾,然後在專案屬性設定相依的連結路徑 Q.讀不到攝影機或視訊之類的檔案? A.或許缺了XviD解碼器。 Q.色彩整個跑掉? A.OpenCV預設圖檔是B-G-R-B-G-R排列 Q.讀攝影機或圖是有讀取到,但是顯示不出來。 A.你可能放在迴圈跑吧,中間不妨delay一下,例如cvWaitKey(30); 不要用 getchar(); system("pause"); Sleep(30); 之類的... ... Q.編譯videoInput會缺少檔案 A.你的版本比較新,把網路上videoInput資料夾裡面DShow的Include, Extra...等 檔案手動貼到DShow目錄裡面,或者跟DShow原有的揉成肉包後一樣放在專案下。 Q.Win7不讓改DShow標頭檔案? A.複製到其他地方,然後貼上新檔案,用系統管理員身分。 Q.OpenMP缺dll? A.雖然OpenCV目前用TBB取代OpenMP,還是說一下,去找到相應的dll,放到執行檔目錄下 或者system32資料夾下。 Q.不想讀到螢幕上的攝影機 A.去裝置管理員關掉,換編號,都可以。注意換電腦之後攝影機編號常常不會一樣的。 Q.記憶體爆掉了? A.基本上如果是用C的寫法,看到指標的,就要記得呼叫相應釋放的函數,當然也有例外. 可以查OpenCV目錄下的pdf文件 ... ... 希望不會寫得太多廢話。有錯請指教。 最後希望剛要接觸 OpenCV 的同好們,能夠早日開始專注在演算法上, 而不會被這些小細節浪費時間。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.214.41
rabird:大推實用心得 真希望我一年多以前可以看到這篇文 就不會浪 04/22 19:56
rabird:費一堆時間了.... 04/22 19:56