今年組裡有大項目落我頭上了,並不能像去年一樣回家還能搞搞Cocos2dX,一把老淚流了下來。。。
回到正題,由於組裡需要做一個顯示板的自動測試項目,涉及到Computer Vision。不得不說,這才是項目裡的大坑。之前一直在做其他基礎庫的研發,最近開始了視覺識別的研發進度。由於市面上沒有很合適的開源工業攝影機,只能硬著頭皮先試試一些已經有先例的視覺庫來嘗試。前期項目架構在C#上,自然而然就想到了OpenCV在包裝C#的庫Emgu CV,而且這個庫跨平台,很適合後期移植到其他平台上去,我就選擇了這個庫來進行嘗試。
在嘗試過程中,遇到一個奇怪的異常,下面這句調在編譯期能夠通過,但運行中就出現許多問題。我在家進行開發時,一切正常,但把工作流發到公司時候,公司機器卻無法正常運行,出現加載異常,很明顯是X86平台調用了X64的DLL導致的問題。按照網上說的,把Emgu的X86文件夾放在Debug文件夾下,也無法加載,此時已然崩潰,但在漫長的幾個小時後,細心比對公司機器和家裡機器之間配置不同,發現一個小地方調整之後就解決了。
Capture capture = new Capture(); //create a camera captue
解決方法步驟:1.Vs平台下,將項目屬性從Any CPU調整為X86
2.你的機器如果是X86的,記得將Emgu下X86文件夾的路徑放進環境變量時候,務必放在X64文件夾路徑之前.僅僅這一點差異,耗費了我幾個小時的精力
小手一抖,傳播一點經驗,讓更多陷進EMGU在X86和X64平台差異魔爪之下的人得以解決問題