OpenCV 的範例程式可以在BCB上跑嗎? |
尚未結案
|
jemes7
一般會員 發表:1 回覆:2 積分:0 註冊:2008-06-10 發送簡訊給我 |
各位先進請解答:
最進想學一些影像處理,經朋友推薦使用Intel OpenCV,因為OpenCV的Library是for VC 使用,扒了一些文章後知道要將所有的.lib轉成omf格式(使用implib 或coff2omf),完成轉換後,我試著去RUN SAMPLE code,但都會產生錯誤,不知這些.h檔案是否也要改變? 以下是我的過程請各位指導! 1.在bcb6的 IDE下new 一個console Application. 2.拷貝所有會用到的OpenCV的*.h(cv.h)' *.lib(omf)&*.dll到這個project目錄下 3.將vc 的 \samples\contours.c裡的程式碼copy to new project 的main()裡 4.project Add 會用到的.lib(cv.lib,cxcore.h,highgui.h) 5.Build &Run. Then Errors occured. [Linker Error] Unresolved external '_cvSeqSlice' referenced from D:\BORLAND\CBUILDER6\PROJECTS\OPENCV\CONTOUR1.OBJ [Linker Error] Unresolved external '_cvSetAdd' referenced from D:\BORLAND\CBUILDER6\PROJECTS\OPENCV\CONTOUR1.OBJ [Linker Error] Unresolved external '_cvSet' referenced from D:\BORLAND\CBUILDER6\PROJECTS\OPENCV\CONTOUR1.OBJ [Linker Error] Unresolved external '_cvRodrigues2' referenced from D:\BORLAND\CBUILDER6\PROJECTS\OPENCV\CONTOUR1.OBJ [Linker Error] Unresolved external '_cvUndistort2' referenced from D:\BORLAND\CBUILDER6\PROJECTS\OPENCV\CONTOUR1.OBJ 因此卡在這裡,後來在http://tech.groups.yahoo.com/group/OpenCV/files/Borland C++ builder/下載opencv_test0.zip 試Run可以,再用前面方法(new 'copy &run)試也可以run,不知那裡需要調整,請那一位高手指點
------
James C. |
jemes7
一般會員 發表:1 回覆:2 積分:0 註冊:2008-06-10 發送簡訊給我 |
已經找到方法可以執行Sample .C,我就自行結案了,概略方法如下:放棄原程式庫,重新編譯
1. 在安裝OpenCV的目錄下製造一個子目錄:_temp 2.執行命令提示元(cmd),將提示元移到...\OpenCV\-make\..的目錄下,輸入 make -f make_all_bc.mak並 執行。 3.完成重新編譯所有的DLL'S , LIB'S & EXE後開始測試程式庫,執行...\OpenCV\bin\cvtest.exe,cxcoretest.exe如果沒有發生錯誤那就恭喜你完成了。(但是我的過程可沒這樣順利) 4.cvtest.exe執行時發生找不到 vfw32.dll 程式庫,因我用BCB6在$(BCB)\lib\psdk\找到vfw.lib,此檔對映到此 vfw32.dll ,所以決定重新自行製造此 vfw32.lib 方法如下 a.因 vfw32.dll 已經打散在三個程式庫裡(msvfw32.dll,avifil32.dll,avicapt32.dll) b.在Windows\system32\ 找到此三檔後,分別為此三檔製造 *.lib(eg. 指令implib -a msvfw32.lib msvfw32.dll) c.將此msvfw32.lib,avifil32.lib,avicapt32.lib三檔案合成一個檔案名為vfw32.lib:指令 tlib vfw32.lib msvfw32.lib avifil32.lib avicapt32.lib d.將此 vfw32.lib 移到 $(BCB)\lib\psdk\ 裡(原來的vfw32.lib 請先行更名vfw32.li~)。 5.將原來在...\OpenCV\-temp\產生的所有檔案刪除,並重覆動作2.(重新make程式庫),到此為止所有程式庫已經All for C Builder了。 6.在BCB6下 new 一個app(console app),將範例...\OpenCV\Samples\ *.c 裡的Code覆蓋進來。 7.更改Project --Options裡的設定。 8.Run ----- Wow! Great!
------
James C.
編輯記錄
jemes7 重新編輯於 2008-07-24 14:41:44, 註解 無‧
|
jacquin
一般會員 發表:0 回覆:1 積分:0 註冊:2009-03-10 發送簡訊給我 |
===================引 用 jemes7 文 章=================== 已經找到方法可以執行Sample .C,我就自行結案了,概略方法如下:放棄原程式庫,重新編譯 1. 在安裝OpenCV的目錄下製造一個子目錄:_temp 2.執行命令提示元(cmd),將提示元移到...\OpenCV\-make\..的目錄下,輸入 make -f make_all_bc.mak並 執行。 3.完成重新編譯所有的DLL'S , LIB'S & EXE後開始測試程式庫,執行...\OpenCV\bin\cvtest.exe,cxcoretest.exe如果沒有發生錯誤那就恭喜你完成了。(但是我的過程可沒這樣順利) 4.cvtest.exe執行時發生找不到 vfw32.dll 程式庫,因我用BCB6在$(BCB)\lib\psdk\找到vfw.lib,此檔對映到此 vfw32.dll ,所以決定重新自行製造此 vfw32.lib 方法如下 a.因 vfw32.dll 已經打散在三個程式庫裡(msvfw32.dll,avifil32.dll,avicapt32.dll) b.在Windows\system32\ 找到此三檔後,分別為此三檔製造 *.lib(eg. 指令implib -a msvfw32.lib msvfw32.dll) c.將此msvfw32.lib,avifil32.lib,avicapt32.lib三檔案合成一個檔案名為vfw32.lib:指令 tlib vfw32.lib msvfw32.lib avifil32.lib avicapt32.lib d.將此 vfw32.lib 移到 $(BCB)\lib\psdk\ 裡(原來的vfw32.lib 請先行更名vfw32.li~)。 5.將原來在...\OpenCV\-temp\產生的所有檔案刪除,並重覆動作2.(重新make程式庫),到此為止所有程式庫已經All for C Builder了。 6.在BCB6下 new 一個app(console app),將範例...\OpenCV\Samples\ *.c 裡的Code覆蓋進來。 7.更改Project --Options裡的設定。 8.Run ----- Wow! Great! 我試(OpenCV_1.1pre1a.exe)的時候發生下列問題: 5.將原來在...\OpenCV\-temp\產生的所有檔案刪除,並重覆動作 2.(重新make程式庫),到此為止所有程式庫已經All for C Builder了。 a. error: C:\Program Files\OpenCV\ml\src\mlsvm.cpp有錯 解決方法: 將mlsvm.cpp中的 error = is_regression ? powf(resp - *(float)true_resp,2): ....... -> 改成error = is_regression ? (resp - *(float)true_resp,2)*(resp - *(float)true_resp,2):...... b. 重覆動作 2 還是出現錯誤, Error: 'C:\PROGRAM FILES\OPENCV\OTHERLIBS\_GRAPHICS\LIB\VIDEOINPUT.LIB' contains invalid OMF record, type 0x21 ** error 1 ** deleting ..\..\bin\highgui110.dll ** error 1 ** deleting all 因此先把make_all_bc.mak改寫如下, 檢查之後的程序是否仍有錯: ........ ........ all: @cd ..\cxcore\src @make -f makefile.ms $(OPT) @cd ..\..\_make @cd ..\cv\src @make -f makefile.ms $(OPT) @cd ..\..\_make @cd ..\cvaux\src @make -f makefile.ms $(OPT) @cd ..\..\_make @cd ..\ml\src @make -f makefile.ms $(OPT) @cd ..\..\_make @cd ..\tests\cxts @make -f makefile.ms $(OPT) @cd ..\..\_make @cd ..\tests\cxcore\src @make -f makefile.ms $(OPT) @cd ..\..\..\_make @cd ..\tests\cv\src @make -f makefile.ms $(OPT) @cd ..\..\..\_make @cd ..\otherlibs\highgui @make -f makefile.ms $(OPT) @cd ..\..\_make ....... ....... c. Error: 'C:\PROGRAM FILES\OPENCV\LIB\HIGHGUI.LIB' contains invalid OMF record, type 0x21 ** error 1 ** deleting ..\..\..\bin\cvtest.exe ** error 1 ** deleting all 解決方法: 建一個C:\PROGRAM FILES\OPENCV\temp目錄, 將C:\PROGRAM FILES\OPENCV\LIB\highgui.lib, C:\PROGRAM FILES\OPENCV\otherlibs\_graphics\lib\videoinput其中 執行命令提示元(cmd) coff2omf -lib:ms C:\PROGRAM FILES\OPENCV\temp\highgui.lib C:\PROGRAM FILES\OPENCV\temp\bhighgui.lib coff2omf -lib:ms C:\PROGRAM FILES\OPENCV\temp\videoinput.lib C:\PROGRAM FILES\OPENCV\temp\bvideoinput.lib 再放回原目錄中, 改回原檔名 d. make -f make_all_bc.mak執行正確 e. 執行cvtest.exe, 則找不到videoinput.dll 之後就不知要如何做? ? ? |
jemes7
一般會員 發表:1 回覆:2 積分:0 註冊:2008-06-10 發送簡訊給我 |
因我之前是用OpenCV1.0,沒有遇到你說的問題,有可能此問題相類似,VideoInput.dll 存在於早期的視窗系統裡,現在已經被打散在其他的*.dll裡‧解決方法:1.先找出指向VideoInput.dll 的*.lib(應該是Videoinput.lib) 2.觀察該*lib裡的函數群名稱 3.到windows目錄下找尋含有這些函數群的*.dll 4.未這些*.dll製造*.lib 5.將這些*.lib合成一個Videoinput.lib檔案 6.將此檔複製到元檔案位置
方法同之前我轉換vfw32.lib類似
------
James C. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |