當前位置:首頁 » 編程軟體 » 靜態編譯opencv

靜態編譯opencv

發布時間: 2022-06-01 08:47:51

1. cmake編譯opencv程序的時候怎麼靜態編譯

使用opencv需要編譯源碼,得到庫文件。可以用cmake構建項目後編譯,也可以直接用官方提供的編譯好的版本。 官方提供的編譯庫一般只是標准版本,沒有附加某些庫,比如tbb等,要想讓opencv使用tbb等庫,就只能自己構建項目後編譯。

2. opeencv 靜態庫和動態庫的區別

動態庫使用(簡單)
1、在VC2010加入OpenCV所有頭文件路徑即可(包括opencv和opencv2兩個文件夾下面的所有文件,一般是將opencv2整個文件夾到opencv文件夾下)(解決方案->C/C++->常規->附加包含目錄)
2、在VC2010加入OpenCV所需庫文件路徑(解決方案屬性->連接器->常規->附加庫目錄)
3、在VC2010加入OpenCV所需庫文件名稱(解決方案屬性->連接器->輸入->附加依賴項)

靜態庫使用
通過「OpenCV - 編譯靜態OpenCV庫(靜態庫)」一文中介紹的方法就應該能夠得到了Debug和Release版本的
OpenCV靜態庫了。
在VC2010使用這些靜態庫也是很有講究的
首先要注意幾點:
1、在VC2010加入OpenCV所有頭文件路徑即可(包括opencv和opencv2兩個文件夾下面的所有文件,一般是將opencv2整個文件夾到opencv文件夾下)(解決方案->C/C++->常規->附加包含目錄)
2、在」解決方案屬性->連接器->輸入->附加依賴項「中加入「3rdparty」文件夾中的所有靜態庫(這也是和動態庫的區別之一,動態庫不需要加入這些「輔助」庫)
vfw32.lib(「3rdparty」文件夾中沒有,這時系統自帶的,直接加入即可)
comctl32.lib (「3rdparty」文件夾中沒有,這時系統自帶的,直接加入即可)
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
zlib.lib
videoInput.lib(「3rdparty」文件夾中沒有,且系統也沒有,此文件在OpenCV為編譯的源碼包中有,ctrl+F去搜索)
atlthunk.lib(可能整個電腦中都沒有此文件,網路上下載,其實也有其他方法來解決"打不開此文件的錯誤",看下面的錯誤糾正)
opencv_lapack.lib
-------------------------------------------------------
注意:以上這些庫很重要,不然即使加了下面3中的OpenCV常用靜態庫也是沒用的,會有很多錯誤!
3、在」解決方案屬性->連接器->輸入->附加依賴項「中加入常用的cv210d.lib cxcore210d.lib highgui210d.lib
4、在」解決方案屬性->連接器->常規->附加庫目錄「中加入這些庫文件(我通常將「3rdparty」文件夾中的庫文件到當前工程的cv210d.lib cxcore210d.lib highgui210d.lib文件所在同級目錄下)所在路徑

3. 為什麼需要編譯OpenCV源代碼

..\OpenCV2.3\opencv\moles 這個目錄有一些常用的庫,一般演算法的實現是看不到的,通常在靜態庫里,你可以連接他們,生成執行文件。
hpp,其實質就是將.cpp的實現代碼混入.h頭文件當中,定義與實現都包含在同一文件,則該類的調用者只需要include該hpp文件即可,無需再 將cpp加入到project中進行編譯。而實現代碼將直接編譯到調用者的obj文件中,不再生成單獨的虎矗港匪蕃睹歌色攻姬obj,採用hpp將大幅度減少調用 project中的cpp文件數與編譯次數,也不用再發布煩人的lib與dll,因此非常適合用來編寫公用的開源庫。

4. 如何編譯 opencv動態鏈接庫

在一個項目中需要用到OpenCV,剛開始使用了OpenCV的動態鏈接庫,這樣,在移動可執行程序時還必須將OpenCV動態支持庫一起搬移,很是麻煩。所以,最終選擇OpenCV靜態鏈接庫,這樣程序移植運行就方便了很多。

需要編譯成靜態庫以便於應用程序鏈接。

網上有的教程中寫的在VC++2010下安裝OpenCV2.1時用到了TBB庫,而我在編譯鏈接自己的程序後需要用到TBB.dll。本人設計的目的就是要做一個獨立的界面程序,不需要攜帶其他第三方庫。經過一段時間的努力最終找到了編譯OpenCV2.1靜態庫的方法。

需要的工具環境及文件:

-------------------------------------------------------------------------------------------------------------

1、Windows XP

2、VC++2010(VS2010)

3、為編譯OpenCV源碼包(我下載的有:OpenCV2.1.0,OpenCV2.3.0及OpenCV2.4.4)

4、CMake2.8.9

說明:OpenCV各版本官方下載地址:opencv.org/

cmake-2.8.9下載地址:ishare.iask.sina.com.cn/download/explain.php?fileid=35025936

--------------------------------------------------------------------------------------------------------------

以OpenCV2.1.0編譯靜態庫為例

CMake配置

-------------------------------------------------------------------------------------------------------------

打開CMake並設置:

Where is the rource code :OpenCV源代碼所在的文件夾

Where to build the binaries:CMake配置好得到的文件放在位置(我的:E:\OpenCV2.1.0-prj)

然後點擊configure,選擇"Visual Studio 10"。然後確定。

等待configure完成,會出現很多紅色的選項,因為主要是生成OpenCV的庫,所以只需保留某些選項:

去掉BUILD_NEW_PYTHON_SUPPORT,BUILD_SHARED_LIBS, BUILD_TESTS

勾選OPENCV_BUILD_3RDPARTY_LIBS, WITH_TBB,WITH_JASPER, WITH_JPEG,
WITH_PNG, WITH_TIFF選項,

然後再點擊configure,如下圖:

提示TBB_INCLUDE_DIR找不到,因為我們不需要TBB庫,所以忽略,再一次點擊configure。

等待配置完成,最後點擊generate,完成後關閉CMake。

-------------------------------------------------------------------------------------------------------------

VC++2010編譯靜態庫

-------------------------------------------------------------------------------------------------------------
進入E:\OpenCV2.1.0-prj目錄,使用VC++2010打開.sln文件,打開項目管理器

這時候會看到

解決方案中有很多小項目存在。

註:這時我們右鍵任意點擊一個子項目(如cv),選擇屬性,可以在配置屬性下的常規項目中看到,配置類型為
靜態庫(lib)。

按住ctrl鍵,選中除過ALL_BUILD, INSTALL, ZERO_CHECK,
uninstall四個項目的其他所有項目,在菜單中選擇項目->屬性,打開配置屬性->c/c++->代碼生成選項,在右側窗口中的運行時庫中選擇多線程調試(/MTd),然後確認。

說明:這里有四個選項(/MT, /MTd, /MD,
/MDd),前兩個一組,為靜態鏈接運行時庫,運行時不需要運行時庫的支持,代碼直接插入到程序中去;後兩個一組,為動態鏈接運行時庫,運行時需要msvcr90.dll或msvcp90.dll支持。

我們先編譯Debug版的OpenCV靜態庫,在解決方案"opencv"(22個項目)上單擊右鍵,選擇重新生成解決方案,此時便開始編譯OpenCV庫了,等編譯結束會提示完成16個,失敗4個:

這四個項目生成的是exe程序,不需要管他們。到這步我們已經生成了Debug版本的靜態庫!

然後我們用相同的方式生成Release版的庫,在之前的基礎上只需要將選項選擇多線程/MT,再進行編譯。編譯時警告很多,直接忽略!

注意:/MT即是Release版本,/MTD即是Debug版本。

最終我們需要的靜態庫就存在:E:\OpenCV2.1.0-prj/lib 和 E:\OpenCV2.1.0-prj/3rdparty/lib
兩個目錄,我們編譯好的庫就在這兩個文件夾下。分別

將E:\OpenCV2.1.0-prj/3rdparty/lib中Debug
下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Debug 文件中。

將E:\OpenCV2.1.0-prj/3rdparty/lib中Release下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Release文件中。

5. 如何讓OpenCV工程在沒有VS和OpenCV的電腦上運行

採用靜態編譯方式生成exe程序,或者在打包執行文件時將exe文件需要的opencv的dll庫文件和vs的dll庫文件與exe文件一同打包到同一個目錄下,在使用exe時會自動在同目錄下查找相關的庫文件。

6. Opencv怎麼靜態編譯(VS2012下)

靜態編譯,需要把你的lib文件拷貝到當前目錄下,然後在你的應用程序里寫上如下語句
#pragma comment(lib,"opencv_core243d")這個樣子。

7. 如何編譯opencv3.0的靜態庫

靜態編譯,需要把你的lib文件拷貝到當前目錄下,然後在你的應用程序里寫上如下語句 #pragma comment(lib,"opencv_core243d")這個樣子。

8. opencv編譯時提示找不到exe文件

將opencv的動態鏈接庫改成靜態編譯方式。靜態編譯,就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so或.lib)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴於動態鏈接庫。
參考地址

9. 如何做到linux下opencv程序的靜態編譯

運行了樓上給的命令之後,結果是這樣的:
# g++ `pkg-config opencv --libs --cflags opencv` facedect.cpp -o facedect -static
/tmp/cc8XhRf6.o: In function `find_face(_IplImage*)':
facedect.cpp:(.text+0x51): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xc0): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xdd): undefined reference to `cvCvtColor'
facedect.cpp:(.text+0xf7): undefined reference to `cvResize'
facedect.cpp:(.text+0x109): undefined reference to `cvEqualizeHist'
facedect.cpp:(.text+0x116): undefined reference to `cvClearMemStorage'
facedect.cpp:(.text+0x188): undefined reference to `cvHaarDetectObjects'
facedect.cpp:(.text+0x1c6): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x1d1): undefined reference to `cvReleaseImage'
/tmp/cc8XhRf6.o: In function `isperson(char const*)':
facedect.cpp:(.text+0x21e): undefined reference to `cvLoad'
facedect.cpp:(.text+0x22f): undefined reference to `cvCreateMemStorage'
facedect.cpp:(.text+0x25a): undefined reference to `cvLoadImage'
facedect.cpp:(.text+0x27d): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x289): undefined reference to `cvDestroyWindow'
collect2: ld returned 1 exit status

10. 怎麼讓opencv編譯到可執行文件里,使別人電腦沒有opencv也能運行exe

首先,先要再linux上安裝opencv的庫,在線安裝的話,很容易
然後,編譯的時候需要加上
`pkg-config
opencv
--libs
--cflags
opencv`
參數

熱點內容
編程機構數量 發布:2024-05-03 23:49:25 瀏覽:953
python源碼編譯安裝 發布:2024-05-03 23:48:16 瀏覽:106
android手機市場 發布:2024-05-03 23:47:04 瀏覽:497
如何配置vlan並添加埠 發布:2024-05-03 23:37:53 瀏覽:724
中國電信無線密碼怎麼修改 發布:2024-05-03 23:37:51 瀏覽:116
源腳本修改器 發布:2024-05-03 23:36:26 瀏覽:192
有哪些低配置游戲像王者榮耀 發布:2024-05-03 22:27:11 瀏覽:244
gp資料庫庫 發布:2024-05-03 22:12:43 瀏覽:874
壓縮點點 發布:2024-05-03 22:12:33 瀏覽:381
有哪些編程比賽 發布:2024-05-03 22:03:45 瀏覽:264