發表文章

目前顯示的是有「OpenCV」標籤的文章

在VS2010中編譯OpenCV 2.1

圖片
最近開始使用VS2010了,突然想到以前有在用OpenCV。所以就想開始準備一下在VS2010中使用OpenCV。 首先當然是要下載OpenCV的最新版本囉。一開始我用Google查詢時,它將我帶到SourceForge中的OpenCV 2.0.0a版。我以為這已是最新的版本,後來才發現最新的是 2.1版 。於是就下載OpenCV 2.1。 下載完畢後,先將它解壓縮。解開後裏面有很多檔案,可是就是找不到VS2010可用的方案檔(*.sln)。於是就去看了一下OpenCV裏的doc目錄,看看說明文件中有沒有說明如何用VS2010來編譯OpenCV。果然裏面有提到這部份。 但是要用VS2010來編譯OpenCV的話,首先要能產生VS2010可以使用的.sln檔。在OpenCV中它提到要使用CMake來產生其它編譯器所需的相關專案檔案。於是就去下載了最新的 CMaker 2.8 。 下載完成後,就先將CMaker 2.8安裝起來。不過,因為先前在下載CMaker時有看到網站中有一段說明,大意是說CMaker2.8是在VS2010之前發行的版本,所以對VS2010的支援會有些問題,需要再更新它的模組檔。所以我就下載 CMakeVS10FindMake.cmake , 將它更新到CMaker安裝目錄中的Modules裏。 接著就是照OpenCV的說明文件中使用CMake GUI介面的方式來產生VS2010的方案檔。正確的方式如下圖: 在Where is the source code欄中,請填入OpenCV2.1的根目錄 ,而不要以為它要的是OpenCV2.1目錄下的src目錄(如第二張圖)。如果填錯的話,可能會得到如第二張圖那樣的結果,最後是無法正確產生VS2010所需的方案檔的。 一切都沒有設錯的話,最後按下「Generate」後,到你指定的輸出目錄中就可以看到VS2010的方案檔了。 我開啟方案檔並建置後,是看到有不少警告,不過最後也都正確地建置成功了。 當然 在這篇文章中也有介紹如何產生VS2010所需的方案檔 ,不過,這篇文章的作者還多加了TBB的功能。這是我沒有加的部份。有需要的人也可以參考一下。

OpenCV使用MSVCR80.dll

在開始第一個OpenCV專案時,跟著網路上的範例將程式碼輸入一個新建的Win32命令列專案中,經過編譯及連結,所有過程完全順利,最後產生了一個可執行檔。 結果一執行時,就出現缺少MSVCR80.dll的訊息。怎麼會這樣呢?我執行的環境中是有安裝Visual Studio 2005的開發環境的啊。照理說,在這樣的環境下是不會缺少什麼DLL的吧。而且,這種一看就是Visual Studio本身會有的DLL,一般而言都是安裝到System32中了,不需要再另外複製一份到程式的執行檔目錄中才對啊。 於是就上網查了一下相關的資訊,原來大家都有遇過這種問題。只不過,他們可能不是使用OpenCV。 解決的方式好像有三種 。不過這篇文章中最後一種方式,我試過是沒有用的。後來是使用了第二種方式才解決問題。第二種方式主要是 在manifest檔案中加入相依性的參考 。 一開始如果方案建置完成時,你的manifest檔的內容應該是: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type=...

在VC++中使用OpenCV

在 VC++中使用OpenCV ,主要就是先設定好環境變數,將Lib、Header、以及source code的路徑設好,再開始一個新的專案。 在這篇文章中,作者是叫我們連結cv.lib、cxcore.lib以及highgui.lib這些函式庫。不過,如果你是在Debug模式下的話,那建議你要連結debug版本的,也就是cv100d.lib(100是版本號,表示1.0.0,也可以用新版的1.1.0)、cxcored.lib、highguid.lib。 假如你是自行編譯OpenCV函式庫的話,那請開啟OpenCV的方案檔,再設定成Debug模式,重新編譯。 如果你有注意看到OpenCV函式庫的編譯模式的話,會發現它多了一種Debug OpenMP 以及 Release OpenMP。 OpenMP 是平行式運算,主要是一組能同時利用多個CPU來進行運算的函式庫。OpenCV因為是影像處理的函式庫,為了加速運算速度,所以也提供了平行式運算的版本。

安裝OpenCV--解決foreground_regions變數不見了的問題

圖片
一直有聽說OpenCV是一套免費的開發源碼影像處理函式庫。很想找個機會來試用一下。 最近有點時間了,就去下載了它 for windows 的最新版本 OpenCV 1.1 pre a 。安裝後,發現它裏面就有兩個Visual Studio的方案檔。我選擇先使用Visual Studio 2005。結果一編譯就發生錯誤: 心想說,怎麼這個開發源碼的品質這麼差呢? 就上網查詢了一下,結果發現這方面的資料很少,好像大家用起來都沒這問題似的。不過還是查到了一篇簡體的文章。它的大意是說要去將foreground_regions改為foreground_region,也就是後面不加s。 於是我就去搜尋了一下原始碼,才發現怎麼在檔案中的foreground_regions變成註解了。 原來在CvMemStorage*這後的註解後面的*,可能由於編碼的問題,變成一個問號,造成 foreground_regions變成註解了。難怪錯誤會說找不到這個變數。 而且也難怪其它外國人都沒這個問題。因為他們的編碼都是正確的。當然不會有這種錯誤啦。 解決的方式。當然就是在CvMemStorage這行後面的註解結尾前加上 *囉。 重新編譯後,就成功了。