A. 如何編譯 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文件中。
B. linux怎麼直接用gcc編譯含有opencv的
首先,先要再linux上安裝opencv的庫,在線安裝的話,很容易
然後,編譯的時候需要加上 `pkg-config opencv --libs --cflags opencv` 參數
C. 用opencv和vs2008編譯的gvfsnake程序,顯示error C2065: 'CvSepFilter' : undeclared identifier
一般是opencv的頭文件沒有包含或者庫沒有填全,檢查一下
D. opencv_contrib-3.0.0如何編譯
1、選中帶jni的工程,按下alt+enter鍵,左側欄找到Builders,然後點new,選擇Program點ok。
2、之後就是設置這個新建的Builder,名字命為NDK_Builder.在Location里將ndk-builder.cmd的路徑填進去:D:\ProgramFile\android-ndk-r9d\ndk-build.cmd
在Working Directory里就選擇當前這個工程,表示NDK_Builder只在當前工程有效。選中後,自動會填寫:${workspace_loc:/ScanBankCard}
3、在Refresh欄,選擇第三個。
4、在Build Options里,選擇After a 「Clean」、During manual builds,During auto builds這個選項最好不要選,否則的話在jni里寫一句話保存一下,就自動編譯一次,這個不太友好。只選擇文中的兩項就ok了,想要編譯so的話點clean project或者手動編譯即可。
備註:有時候更改了jni里的c代碼,一定要clean一下整個project,否則有可能編譯不進去。
E. opencv編譯問題,請高手回答
首先,你使用的是Vc
6.0還是其他平台?
從提示來看,都是頭文件沒找到,編譯未通過,連接就先不必看了,
先把頭文件的目錄設置好再說吧,
vc6.0里邊好像是在options->directories目錄,然後填入一些目錄,vs2008我忘記在什麼地方設置了。
F. 如何編譯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到此結束
G. 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的環境大同小異,基本都是選擇編程語言後就確定了編譯器,然後是頭文件路徑的設定和庫文件路徑的設定讓編譯器能找到就行,然後就可以進行編譯鏈接成最終的可執行文件了,按照這個思想,就不難處理問題了。
H. 能配置opencv的編譯軟體有哪些
配置環境是: ubuntu12.04 + opencv2.4.0
安裝OpenCV:
1. 安裝必要的軟體
apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
2. 從sourceforge上下載OpenCV的源碼,下載地址是:
http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.0/
3. 解壓到任意目錄
tar xvf OpenCV-2.4.3.tar.bz2
cd OpenCV-2.4.3/
4. cmake編譯OpenCV源碼,所有的lib文件都會被安裝到/usr/local目錄下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
5. 安裝
make
sudo make install
環境變數pkg_config_path 提供編譯時和運行時庫的路徑查詢。pkg-config 是通過庫提供的一個 .pc 文件獲得庫的各種必要信息的,包括版本信息、編譯和鏈接需要的參數等。這些信息可以通過 pkg-config 提供的參數單獨提取出來直接供編譯器和 鏈接器使用。使用 pkg-config 的 --cflags 參數可以給出在編譯時所需要的選項,而 --libs 參數可以給出 鏈接時的選項。
在上述opencv 的安裝結束後,pkg-config 的讀取目錄 /usr/local/lib/pkgconfig/ 下已經有opencv.pc。
6. 更新環境變數:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
編譯程序:
用OpenCV讀入一副圖像(img.jpg),代碼如下:
//main.cpp
#include <stdio.h>
#include <cvaux.h>
#include <highgui.h>
using namespace cv;
int main() {
IplImage *img = cvLoadImage("img.jpg",0);
if (NULL == img) {
printf("Load image failed.\n");
return -1;
}
printf("Hello World\n");
cvReleaseImage(&img);
return 0;
}
方法1:直接命令編譯:
g++ main.cpp -o main `pkg-config --cflags --libs opencv` (注意ESC下面的`,不是單引號)
方法2:藉助cmake,需要寫CMakeLists.txt,示例如下:
cmake_minimum_required(VERSION 2.8)
project(Hello)
find_package(OpenCV REQUIRED)
add_executable(Hello main.cpp)
target_link_libraries(Hello ${OpenCV_LIBS})
然後:
cmake .
make
I. 如何編譯帶有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目錄下。
J. 如何編譯opencv
1. 將OpenCV2.2.0的壓縮包解壓到路徑D:\OpenCV\opencv (以下所有路徑都可自己選擇 只要對應起來即可)
2. 安裝Cmake,可以到官網去下載並按默認設置安裝安裝即可。
此處注意一般vs採用的是win32編譯器進行debug和release(即使你是安裝的x64),所以下載cmake的時候應該下載32位版本,這樣cmake編譯出來的是32位的工程文件,x64的cmake編譯的是64位工程文件。
3.打開Cmake,在第一行「Where is the source code」後面的那個「Browse Source...」按鈕,選擇OpenCV的安裝路徑。