導航:首頁 > 源碼編譯 > 如何編譯opencv

如何編譯opencv

發布時間:2023-03-07 15:20:26

❶ 如何編譯opencv代碼

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

❷ 如何編譯OpenCV進行IOS7

編譯的Xcode項目失敗,出現以下錯誤: 「缺少必需的架構arm64在文件/用戶/ * / Git/ocr/opencv2。 它運作良好,如果我改變架構(構建設置下)(ARMv7的,armv7s),而不是(ARMv7的,armv7s)。 如何更改opencv的python構建腳本,添加arm64支持opencv2。
1. micahp的回答幾乎是完美的,但錯過了模擬器版本。因此,修改平台/ IOS /到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

你需要下載行工具Xcode的5.0.1,然後運行 python opencv/platforms/ios/build_framework.py ios

2. 我修改了以下內容,使之建立,雖然我還沒有得到一個arm64 iOS設備進行測試的 編輯:我也只好跟著 假設「OPENCV」是包含從Github上的opencv源文件夾: 在每個gzlib.c, gzread.c, gzwrite.c位於opencv/3rdparty/zlib/地址: #include <unistd.h>

在頂部後,原有的包括。 另外開opencv/platforms/ios/cmake/Moles/Platform/iOS.cmake並從改線88: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS")

到: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string "Build architecture for iOS")

在另外改變buildscriptopencv/platforms/ios/build_framework.py在99線和100從: targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "i386"]

到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

所得到的庫將包括以下內容: $ xcrun -sdk iphoneos lipo -info opencv2
Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64

雖然我有一個關於剩餘的關注opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake它定義了一個數據指針的大小為4的行14和17。它應該是8的64位我想,這樣我沒有測試過,如果庫工作arm64我會建議進一步研究在這一點上,如果它不能正常運行。

3. 嘗試等待下個月。將發布新的XCode具有更強大的32/64位支持。

4. 修改「到: def build_framework(srcroot, dstroot):
"main function to do all the work"

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386"]
for i in range(len(targets)):
build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i])

put_framework_together(srcroot, dstroot)

❸ 如何編譯opencv中的install工程

第一步:由於opencv是在cmake工具下建立的工程,所以我們先要下載cmake,下載地址隨便一搜都有,不多說。下載到home的主目錄下,這里我們是/home/lg。看下面的命令:#cd /home/lg#tar xzvf CMake2.4.7.tar.gz .#cd CMake2.4.7#./boostrap#gmake#make install這樣cmake工具安裝好了,並且可以直接使用cmake命令根據cmake的編譯規律,我們選擇外部編譯。
2
下載Opencv2.3.0到/home/lg解壓後進入Opencv2.3.0的目錄下(這里的opencv與以前版本1.0的不一樣,沒有configure文件,所以我們執行不了 ./configure命令) :#mkdir build#cd build#cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON.. (這條命令解析可以參考cmake教程, 但是記住這里的第二個選項,我們將opencv安裝在/usr/local目錄下的)#make#make install到這opencv編譯完成,接下去看看opencv這個工具能正常使用。
3
記住這里的做法前一種對fedora有用, 也就是說在fedora的環境下只能使用這種做法, 但是ubuntu卻可以使用兩種方法。 順便說一下, 經常遇見apt-get命令,這是在ubuntu下使用獲取軟體包的命令, fedora使用的是yum, 記住了, 否則經常出現使用apt-get卻獲取不了軟體包的情況。方法1:在/etc/ld.so.conf.d下新建一個文件opencv.conf,裡面輸入/usr/local/lib方法2:在/etc/ld.so.conf文件中加入/usr/local/lib這一行然後執行#ldconfig(root許可權下)#cp /usr/local/lib/pkconfig/opencv.pc /usr/lib/pkgconfig(或者是輸入這個命令 exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH)( pkconfig的用法見以前的博文)至此opencv安裝完成我們可以找個例子來做實驗#cd /home/lg/Opencv2.3.0#cd samples/cpp#g++ `pkconfig --cflags --libs opencv` drawing.cpp -odrawing(記住前面的兩個引號是通過ESC下面的那個波浪符鍵獲得的)現在我們編譯那個人臉檢測程序,在Opencv2.3.0/data/目錄下有檢測鼻子、眼睛的XML文件,這可以通過改build目錄下的c目錄下的facedetect文件獲得。#cd ..#cd c#g++ `pkconfig --cflags --libs opencv` facedetect.c -ofacedetect到此結束

❹ opencv如何編譯能支持單片機

可根據如下操作實現。
首先在VS中用C++寫一個串口能信的子程序放到OPENCV的程序中,再寫一個單片機的串口通信程序,最後連接運行即可。

❺ 如何用cmake編譯opencv 到 c++builder

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

❻ 如何用cmake 編譯OpenCV 3.1.0的opencv

用cmake 編譯OpenCV 3.1.0的opencv:

建一個新的文件夾,完整路徑:D:CMakeCMake-StudyHelloCMake,

然後在HelloCMake文件夾里建立一個HelloCMake.cpp文件,裡面的代碼如下:

#include <iostream>

int main()

{

std::cout<<"Study CMake Together - Hello CMake!"<<std::endl;

return 0;

}

然後在HelloCMake文件夾里建立一個CMakeLists.txt文件,注意文件名不能是別的,必須叫這個名字。裡面的內容如下:

cmake_minimum_required(VERSION 2.6)

project(HelloCmake)

add_executable(HelloCMake hellocmake.cpp)

接著在HelloCMake的同級目錄里建立一個新的文件夾,就叫做HelloCMake-bin,在我機子上的完整路徑是:D:CMakeCMake-StudyHelloCMake-bin,你可以針對自己的目錄路徑對號入座。

然後打開CMake程序,接著把包含CMakeLists.txt和HelloCMake.cpp文件的完整路徑給」where is the source code」,把最後建立的HelloCMake-bin目錄的完整路徑給」where to build the binaries」,然後按Cofigure,

Configure完了以後,再按Generate,直到所有的紅色選項都變成灰色為止。然後打開HelloCMake-bin,你會發現原來空的文件夾裡面自動生成了好多文件。

到此為止,工程構建完成,打開HelloCMake-bin目錄下的HelloCMake.sln,裡面有三個工程,分別是:ALL_BUILD;HelloCMake;ZERO_CHECK。這三個工程的大概作用如下(個人理解而已),HelloCMake就不用說了,自己要建立的那個工程;ALL_BUILD是管理整個項目的工程;ZERO_CHECK是實時監視CMakeLists.txt文件變化的工程,一旦CMakeLists.txt里的內容發生了任何變化,ZERO_CHECK就會告訴編譯器要重新構建整個工程環境。所以,你可以先把工程關掉,打開CMakeLists.txt文件,更改裡面的內容以後,把根據以上說的步驟走一遍CMake;你也可以在編譯器環境(如VS2008)中更改CMakeLists.txt文件,然後直接F7編譯工程。如果你選擇後者,你會發現所示的現象發生。

因為你改變了CMakeLists.txt的內容,工程的環境要重新構建、設置。所以你必須載入新的工程環境設置。點Yes,然後點Reload。重新載入設置過的工程環境。

另外一個經常看某些童鞋問的,就是當彈出所示的界面時要怎麼辦?能怎麼辦?界面上提示已經灰常清楚了,指定exe的路徑給它,然後點OK就可以了;出現這種情況的原因是你把沒有生成exe可執行文件的工程設為啟動工程了,你會發現ALL_BUILD這個工程名字是黑體顯示的,表示它是啟動工程;或者你把生成exe可執行文件的工程,如這里的HelloCMake右擊->設置為啟動工程,也不會出現所示的界面。

好,這些比較瑣碎的東西介紹完,我們一起來看看CMakeLists.txt裡面的代碼表示什麼意思,爭取每句代碼都作解釋,如果有不對的地方,一定要告訴我!

把CMakeLists.txt里的內容再羅列出來:

  1. cmake_minimum_required(VERSION 2.6)

2. project(HelloCmake)

3. add_executable(HelloCMake hellocmake.cpp)

第1行,cmake_minimum_required(VERSION 2.6)這是對CMake版本的要求,基本上每個CMakeLists.txt文件里都會有這句代碼,cmake_minimum_required是cmake里的命令,可大寫小寫。VERSION這個關鍵字必須是大寫,而且不能省略;2.6就是CMake的版本號,現在的版本是2.8.3。

第2行,project(HelloCmake),project也是CMake的命令,裡面的參數HelloCMake是你要生成的工程的名字,換句話說就是生成的***.sln或者***.dsw等工程項目文件的名字。

第3行,add_executable(HelloCMake hellocmake.cpp),add_executable同樣是CMake的命令,鏈接有關的源文件,然後生成exe可執行文件,這是這個命令的作用。第一個參數是生成的exe文件的文件名,一般與project里的工程名一致,這樣編譯生成的文件就分別是HelloCMake.sln和HelloCMake.exe,當然也可以不一樣。Add_executable()後面的是一個參數列表,可帶多個要編譯的文件名,中間以空格或回車等隔開,如可以加入:

add_executable(HelloCMake hellocmake.cpp hellocmake.h)

這樣就把CMake里最常用的三個命令介紹完了,分別是cmake_minimum_required; project; add_executable等

❼ 如何編譯 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文件中。

❽ OpenCV靜態庫編譯與鏈接

以OpenCV-4.0.0為例說明在Ubuntu環境下的靜態庫編譯與鏈接方法:

opencv依賴第三方的庫,所以當把opencv編譯成靜態庫的時候,注意要把它運行時必要的依賴庫也編譯進來,opencv源碼內有自己的3rdparty,主要有:libjpeg、libpng、libtiff、libzlib、libwebp、libprotobuf、ffmpeg(用到video時編譯)、libgtk(用於顯示界面顯示,伺服器部署不會用到),可以通過cmake -LA來查看配置的編譯信息,再根據信息考慮把opencv的哪些mole編譯進來。

鏈接時指定opencv的靜態庫以及依賴的庫。另外需要注意頭文件的問題,通過CMakeLists把opencv加入項目編譯時,由於opencv編譯完成後要install才會把所用的頭文件集中拷貝到一個地方,所以事先將頭文件拷貝到了項目的opencv目錄下。

❾ 如何編譯帶有extra molesopencv

從opencv官網下載下來的exe文件安裝後只含有opencv自帶的一些moles,有時需要其extra moles的一些功能,就需要手動編譯。
這里詳細的說明了opencv自帶的moles和extra moles

環境說明

Windows10 x64
Opencv 3.1.0
Visual Studio 2015
CMAKE 3.4.1

第一部分:生成OpenCV vs項目

下載opencv源碼和 opencv_contrib源碼 這里的opencv源碼部分用官網的exe安裝包解壓安裝也可以。需要的只是源碼。
!!!注意:這里OpenCV和OpenCV contrib的代碼版本要一致,否則可能後產生不可預知的編譯錯誤!!!
將opencv和opencv_contrib解壓到一個目錄里,並建立一個空文件夾名為VSproject,用來存儲待編譯的vs項目

打開CMAKE,在where is the source code裡面選擇opencv的源代碼目錄,我安裝的是exe包,所以我的目錄是F:/Sunday/opencv/sources
在where to build the binaries選擇F:/Sunday/VSproject
點擊Configure,選擇你的編譯器,如下

點擊Finish
等待出現Configuring done
找到OPENCV_EXTRA_MODULES_PATH項,輸入opencv_contrib下的moles目錄F:/Sunday/opencv_contrib/moles
如下

其他選項根據自己的需要勾選,不懂的話就不要動了。
我取消勾選的有

BUILD_DOCS
BUILD_TESTS
BUILD_PERF_TESTS
BUILD_opencv_python2
BUILD_opencv_python3
WITH_CUDA
WITH_MATLAB

注意:千萬不要勾選BUILD_opencv_contrib_world和BUILD_opencv_world,否則會導致編譯失敗。但是如果
不添加opencv_contrib的話,就可以勾選BUILD_opencv_world,這樣編譯出來的庫文件和dll就只有一個
opencv_world.dll。包含了所有的庫。

再次點擊Configure沒問題的話上面不會有紅色,如下

7. 點擊Generate,開始生成VS項目

導出成功如下,顯示Genereating done

第二部分:編譯

打開VSproject目錄下的OpenCV.sln,我的是F:\Sunday\VSproject\OpenCV.sln
先編譯debug版本的代碼,同時要確保平台正確,在ALL_BUILD項目上右鍵→生成,即開始編譯。這個過程一般較長。

編譯成功後生成CMake Targets下的install項目,這樣所有opencv編譯出來的lib,dll,頭文件都會統一放在install文件夾下。

把編譯改為Release模式,按照1~3步再編譯一下。
最終所有編譯好的文件都會存在VSproject的install目錄下。

閱讀全文

與如何編譯opencv相關的資料

熱點內容
電腦里總是有一些1k的文件夾 瀏覽:40
drm加密絕對安全 瀏覽:508
android滅屏流程 瀏覽:493
如何更改站點文件夾名字 瀏覽:894
如何看伺服器幾核 瀏覽:274
找酒吧設計公司用什麼app 瀏覽:680
基本初等函數的導數公式及導數的運演算法則 瀏覽:915
為什麼小米app啟動廣告關不了 瀏覽:877
空調壓縮機一直不停 瀏覽:511
養殖系統開發源碼 瀏覽:82
pdf的目錄 瀏覽:406
光遇安卓如何一個人拍視頻 瀏覽:277
怨女pdf 瀏覽:708
扭曲伺服器什麼時候開 瀏覽:23
加密貨幣換平台 瀏覽:610
手機內存壓縮軟體 瀏覽:33
生成樹是否與遍歷演算法有關 瀏覽:728
python強化學習迷宮 瀏覽:451
老包子解壓視頻 瀏覽:885
伺服器注冊是什麼意思 瀏覽:419