全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8848
推到 Plurk!
推到 Facebook!

OpenCV 的範例程式可以在BCB上跑嗎?

尚未結案
jemes7
一般會員


發表:1
回覆:2
積分:0
註冊:2008-06-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-12 12:11:50 IP:210.203.xxx.xxx 訂閱
 各位先進請解答:
最進想學一些影像處理,經朋友推薦使用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.
附加檔案:4850a205e928e_contour.zip
jemes7
一般會員


發表:1
回覆:2
積分:0
註冊:2008-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-24 14:38:57 IP:219.91.xxx.xxx 訂閱
   已經找到方法可以執行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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-11 02:11:03 IP:220.139.xxx.xxx 訂閱

===================引 用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-11 15:07:32 IP:219.91.xxx.xxx 訂閱
  因我之前是用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.
系統時間:2024-04-25 15:13:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!