Ⅰ 如何用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里的內容再羅列出來:
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怎麼一編譯全是cxcore.hpp的錯誤啊,求高手救命..
上述提示說的意思是:沒找到DLL的符號信息。
說明你的程序運行需要(或間接需要)這些DLL。
應該是配置問題,下面這個網址有詳細說明OpenCV的配置
另外,檢查一下你是bug版,還是release版。OpenCV bug版應配置文件名帶d的DLL,比如cxcore100d.dll,release版是cxcore100.dll
Ⅲ linux下怎樣編譯opencv文件
首先,先要再linux上安裝opencv的庫,在線安裝的話,很容易 然後,編譯的時候需要加上 `pkg-config opencv --libs --cflags opencv` 參數
Ⅳ ubuntu系統opencv編譯時出現的問題,,頭疼死了。 求大shen
根據錯誤來看你需要建立highgu.hi這個文件或者從別的地方復制過來,總之你請你仔細檢查以下文件
Ⅳ mac下用什麼環境編譯opencv
. 安裝
在OpenCV官網下載的安裝包適用於Linux/Mac,因此需要使用CMake工具來進行編譯安裝,嘗試了幾次,都在最後的鏈接那裡失敗了,在StackOverFlow查了下才發現,目前opencv只支持使用xcode6版本的編譯鏈接器,我使用的是xcode7的,為了避免不必要地麻煩,就不採取編譯安裝方式了,去homebrew搜索一下,可以下載
現在執行"brew install opencv",等待即可安裝完成,安裝後路徑是:/usr/local/opt/opencv3,我們可以設置一個OPENCV3_HOME環境變數,方便以後快速打開這個文件夾。該文件夾下有opencv的核心和擴展模塊
在lib目錄下是opencv的庫,在include目錄下包含了兩個子目錄:opencv和opencv2,opencv裡麵包含了opencv1.x的核心頭文件,opencv2安裝模塊功能組織,包括核心模塊、圖像處理模塊、2D功能模塊、高層GUI圖像用戶界面模塊、機器學習模塊等。
2. 環境配置
開發平台IDE的環境大同小異,基本都是選擇編程語言後就確定了編譯器,然後是頭文件路徑的設定和庫文件路徑的設定讓編譯器能找到就行,然後就可以進行編譯鏈接成最終的可執行文件了,按照這個思想,就不難處理問題了。
Ⅵ OPENCV 編譯沒問題 就是不能運行出來 錯誤在下面
pFrame從哪來?有沒有賦值成功?
你跟蹤一下,看cvSplit前,pFrameTMat的寬高正常不?
Ⅶ 求助ubuntu16.04編譯opencv的時候老是出這個錯誤,是什麼意思啊,該怎麼解決啊
你好,可能是安裝某個依賴包出現錯誤了,具體原因不太清楚,然後這個是我安裝opencv3的過程,你可以參考一下!看看是自己哪一步出問題了!不懂的可以在文章下邊留言提問!
Ubuntu安裝opencv3
Ⅷ Dev-c++5.11下如何配置opencv3.4.0
1.qt軟體安裝與配置
①安裝Qt5.10.0,我的安裝路徑:D:Qt
注意點:在彈出的「選擇組件窗口」中,選擇相關組件(支持QtCreator開發方式如下圖所以,支持VisualStudio開發方式則增加相應的MSVC對應的版本),選擇組件中關於「Strawberry Perl 5.22.1.3」的不勾選(這個組件在非首次安裝時容易報錯且當下學習使用不到),勾選下方工具的MinGw5.3.0設置完畢後,點擊「下一步按鈕」進入下一步安裝即可。
Ⅸ 64位系統安裝 VS2013 所編譯opencv程序不能運行
1、意思就是 64位和32位的不兼容。
2、不知道你想表達的是什麼意思。
3、是的。
4、DEBUG的程序一般可以調試,release一般無法調試,並且經過優化演算法。由於優化演算法不同,甚至導致DEBUG的程序和release程序運行結果不一樣的情況,所以要按照規范寫代碼。
Ⅹ 在ARM上運行交叉編譯後的opencv文件,沒有輸出
一、交叉編譯opencv
構造:
下載:各個庫的下載可以直接搜名字到官網下載
幾個關鍵解釋:
「--prefix=」 後邊跟make install時的位置,本例中,libz在make install時將安裝到/usr/arm-linux-gnueabihf中
「--host=」 後邊跟arm-linux表明使用的是ARM環境
有configure的才能進行configure配置
4)所有的makefile修改類似
Libz的交叉編譯
第一步:# ./configure --prefix=/usr/arm-linux-gnueabihf --shared
第二步:修改makefile,主要有下邊幾個,修改的時候通篇參照即可
CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-ar rc
RANLIB=arm-linux-gnueabihf-ranlib
STRIP = arm-linux-gnueabihf-strip
如果有ARCH的話,ARCH=ARM
第三步:#sudo make
#sudo make install
Libjpeg的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:參考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Libpng的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:參考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Yasm的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static
第二步:修改makefile
第三步:#sudo make
#sudo make install
Libx264的交叉編譯
第一步:#CC=arm-linux-gnueabihf-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/arm-linux-gnueabihf
第二步:修改config.mak里的參數,因為makefile要調用config.mak,所以修改方法同makefile
第三步:#sudo make
#sudo make install
Libxvid的交叉編譯
第一步:首先切換目錄 #cd build/generic
第二步:#./configure --prefix=/usr/arm-linux-gnueabihf --host=arm-linux --disable-assembly
第三步:#sudo make
#sudo make install
ffmpeg的交叉編譯
第一步:
./configure --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/arm-linux-gnueabihf/include --extra-ldflags=-L/usr/arm-linux-gnueabihf/lib --prefix=/usr/arm-linux-gnueabihf
第二步:修改makefile文件
第三步:#sudo make
#sudo make install
第四步:將ffmpeg加入pkg-config
執行#sudo gedit /etc/bash.bashrc,在末尾加入
export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/arm-linux-gnueabihf /lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf /lib/
完畢後使用命令:#source /etc/bash.bashrc
或者單獨使用三個export,不過壽命只在一個終端中,終端關閉時就失效。
幾個關鍵解釋:--extra-flags指向xvid的安裝路徑,--extra-ldflags指向x264的路徑
安裝cmake-gui
執行:#sudo apt-get install cmake-qt-gui
Opencv的交叉編譯
第一步:修改opencv/platflrms/linux/目錄下的arm-gnueabi.toolchain.cmake,將其所有刪掉,寫入:
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc )
set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )
第二步:在opencv目錄下新建build目錄,進入build目錄,執行命令:
#cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ../
這時,要保證出現:
第三步:使用cmake-gui打開CMakeCache.txt,去掉所有的無關項,修改CMAKE_INSTALL_PREFIX,來確定make install的目錄
第四步:#sudo make
#sudo make install
可能出現的錯誤:
opencv編譯不通過,出現skip之類的,說明ffmpeg沒編譯好,或者其編譯好了,但是pkg-config沒有設置好,一定要設置好其環境
前邊幾步不通過的話,看看命令有沒有少,或者有沒有修改好makefile
在arm上使用時,一種方法時直接將編譯好的opencv目錄下的lib文件拷貝到開發板對應的/lib目錄下,其他或者拷貝到自己指定的目錄,並設置好環境變數即可使用