linux下的opencv
以下說明在Linux下Python和OpenCV結合安裝的過程,Python要使用OpenCV模塊,則必須導入OpenCV提供的包,所以要提供Python支持,首先在安裝OpenCV前安裝必要的組件,一般列表如下:
1、gcc g++一般系統自帶
2、cmake 編譯OpenCV時使用,需要手動安裝
3、pkg-config命令,一般系統自帶,如果缺少,使用 yum -y install pkg-config 安裝
4、Python 2.x,系統自帶
5、NumPy 一個用於大型矩陣處理的庫,這個必須!如果不安裝則後面OpenCV安裝後也編譯不出來Python的模塊,其他庫可以後來安裝
最後一步是安裝OpenCV
在保證前4項沒問題的情況下,開始安裝NumPy模塊,官網下載地址為:http://www.scipy.org/scipylib/download.html
進入SourceForge下載,地址為:https://sourceforge.net/projects/numpy/
直接點擊Download即可下載,下載成功之後上傳到Linux伺服器,安裝過程很簡單,解壓後直接安裝即可(之前要確保python-devel已經安裝)
unzip numpy-1.11.1.zip
cd numpy-1.11.1/
python setup.py install
另外numpy還可以去python官網下載:https://pypi.python.org/pypi/numpy
安裝成功之後接下來進一步安裝OpenCV,官方網站為:http://opencv.org/進入後點擊DOWNLOADS來到下載界面:http://opencv.org/downloads.html,這里下載2.4.13的版本
下載完之後上傳到Linux,執行接下來的安裝:
unzip opencv-2.4.13.zip
cd opencv-2.4.13/
cmake -D WITH_GTK_2_X=ON -D CMAKE_INSTALL_PREFIX=/usr/local .
make # make -j4表示開4個線程來進行編譯
make install
安裝過程時間可能會有點長10~30分鍾左右,編譯完成之後OpenCV就安裝到了指定的/usr/local下面的一些目錄中,庫文件就安裝到了/usr/local/lib下,Python的模塊安裝位置是:/usr/local/lib/python2.7/site-packages,執行 ls /usr/local/lib/python2.7/site-packages/ 可以看到兩個文件,一個是cv2.so一個是cv.py
這兩個文件在剛才opencv-2.4.13編譯的目錄下面lib/下也存在著兩個python模塊文件,但是不幸的是現在並不能直接使用,原因是我們操作系統python依賴包的位置是/usr/lib/python2.7下,所以剛才如果編譯到/usr下是直接可以用的,不過這個也不重要,只要我們將這兩個文件復制到正確的目錄下,那麼就能正常使用OpenCV的功能了,執行: cp /usr/local/lib/python2.7/site-packages/cv* /usr/lib/python2.7/site-packages/ 復制過去之後進入python互動式界面執行 import cv2 沒有報錯則安裝成功
可以寫一個測試的小案例,在伺服器上有一張圖片是test.jpg現在簡單的使用cv2模塊解析成圖像矩陣,然後再寫入磁碟文件中,代碼如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
image = cv2.imread("test.jpg")
print image
cv2.imwrite("test1.jpg",image)
這里將原有的test.jpg生成test1.jpg,
執行 python cvtest.py 執行完後會發現輸出好多矩陣變數,並且生成了test1.jpg文件
生成的文件有可能比原文件大也有可能小,具體根據圖像來決定,現在查看一下圖片內容,和之前是一樣的
Ⅱ 怎麼安裝opencv linux
OpenCV是一個基於開源發行的跨平台計算機視覺庫,它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演算法。在linux上安裝opencv的方法如下:
工具:
Windows7、VMware Workstation 12 Pro、ubuntu-15.10、opencv-3.0.0.zip
步驟:
一、安裝關聯庫
1、安裝編譯工具:sudo apt-get install build-essential
編譯程序有了這個軟體,它才知道頭文件和庫函數在哪,最後才形成一個開發環境。
Ⅲ 如何在Linux下編譯安裝OpenCV
下載opencv的linux安裝版,使用cmake工具編譯安裝,按照opencv的安裝文檔,一般是先執行cmake config,然後執行cmake install。
Ⅳ linux怎麼配置opencv
[cpp]view plain
sudoapt-getinstallbuild-essential
sudoapt-getinstallcmake
sudoapt-getinstalllibgtk2.0-dev
sudoapt-getinstallpkg-config
sudoapt-getinstallpython-devpython-numpy
sudoapt-getinstalllibavcodec-devlibavformat-devlibswscale-devlibjpeg-devlibpng-devlibtiff-devlibjasper-dev
make&&makeinstall
sudovim/etc/ld.so.conf.d/opencv.conf
- 最後一行添加
/usr/local/lib
sudoldconfig
- 現在打開另一個文件,添加環境變數:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
exportPKG_CONFIG_PATH
cd~
vimhello.cpp
#include<stdio.h>
#include<opencv2/opencv.hpp>
usingnamespacecv;
intmain(intargc,char**argv)
{
if(argc!=2)
{
printf("usage:DisplayImage.out<Image_Path> ");
return-1;
}
Matimage;
image=imread(argv[1],1);
if(!image.data)
{
printf("Noimagedata ");
return-1;
}
namedWindow("DisplayImage",WINDOW_AUTOSIZE);
imshow("DisplayImage",image);
waitKey(0);
return0;
}
g++`pkg-config--cflagsopencv`-ohellohello.cpp`pkg-config--libsopencv`
./hellopsb1.jpg
root@iZ28gdz88j1Z:~#./hellopsb1.jpg
(DisplayImage:25620):Gtk-WARNING**:cannotopendisplay:
希望能夠幫助到你
進入目錄opencv-3.1.0,然後cmake生成makefile:
先把我的安裝歷史紀錄給大家看下吧,大家也好心裡有數
然後
[html]view plain
這下子代碼插入了。
現在我們做的就是該怎麼找到opencv庫了:
首先打開這個文件,在最後一行添加一句話,當然它也可能是空的,沒影響。
[html]view plain
[html]view plain
運行以下代碼配置庫:
[html]view plain
sudo gedit /etc/bash.bashrc
在這個文件的末尾添加下面兩行:
[html]view plain
然後測試:
[html]view plain
[cpp]view plain
然後編譯:
[html]view plain
然後運行:
[html]view plain
後面的psd是圖片路徑,由於我是在伺服器上運行的,所以沒辦法顯示出來,伺服器默認是沒有裝Xwindow的,我裝了,但是報了一堆錯,就放棄了
[html]view plain
Ⅳ linux怎麼切換opencv版本
1.注意事項:安裝目錄!
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.1.0 ..1
CMAKE_INSTALL_PREFIX之後的路徑就是opencv的安裝目錄了。之前的opencv2.4.13安裝到了根目錄,即/usr/local/里,所以之後的opencv3.1.0安裝到了/usr/local/opencv3.1.0/中這里,兩個版本opencv目錄一定要分開,不能安裝到同一個路徑下,否則會出現問題!
2.切換方式
切換方式其實比較簡單,把環境變數的路徑改一下就可以了。
a)
sudo gedit /etc/ld.so.conf.d/opencv.conf1
把opencv的lib路徑添加進去:
opencv3.1.0:
/usr/local/opencv-3.1.0/lib1
opencv2.4.13:
/usr/local/lib1
b)
sudo ldconfig1
c)
sudo gedit /etc/profile1
在最後加入PATH路徑:
opencv3.1.0:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.1.0/lib/pkgconfig
export PKG_CONFIG_PATH12
opencv2.4.13:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH12
d)
sudo gedit /etc/bash.bashrc 1
在最後添加PATH路徑:
opencv3.1.0:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.1.0/lib/pkgconfig1
opencv2.4.13:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig1
3.查看opencv版本:
pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs opencv123
實際使用中發現還是在尋找opencv2.4.13.
如果編譯使用的是cmake,打開CMakeLists.txt,添加:
set(OPENCV_DIR 「/home/ubuntu/opencv-3.1.0/build」)
如果上述方法還沒有作用,那麼就只好卸載不需要的opencv版本了:
cd opencv-2.4.13/release
sudo make uninstall
cd ..
sudo rm -r release
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/sh
關於更多Linux的學習,請查閱書籍《linux就該這么學》。
Ⅵ opencv2.1.0在linux下怎麼安裝
pkg-config 是一個庫文件安裝信息管理工具,它可以返回已安裝的庫文件及其相關頭文件的位置信息。安裝這個極容易,自己下載安裝把。
pkg-config 通過各個庫文件的.pc 文件識別已安裝的庫文件的信息,這些.pc文件是由各庫的安裝程序自己生成的,例如ffmpeg 安裝程序會在/usr/local/lib/pkgconfig目錄下提供libavcodec.pc libswscale.pc 等5個.pc文件,分別對應安裝的五個庫文件。
但pkg-confg默認只搜索/usr/lib/pkgconfig目錄,去尋找.pc文件,這里需要添加一個環境變數 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig,使得pkg-config可以找到ffmpeg的安裝信息。
三 安裝cmake
cmake 是一個跨平台makefile生成工具,是編譯新版opencv所必須的工具。
直接下載安裝cmake到一個合適的位置,並將cmake安裝目錄下的bin目錄加入PATH環境變數,cmake的使用詳見下述說明。
四 安裝opencv
1、下載最新版opencv源代碼 for linux.
2、在源代碼目錄下 mkdir release && cd release
3、cmake ../ (重點)
使用cmake 生成編譯opecv的Makefile 文件, ../ 是opencv的源代碼目錄,裡麵包含了預置的cmake 配置文件CmakeLists.txt。
這里的輸出,會顯示默認配置下,各模塊的檢測情況,重點是opencv所需工具庫是否被檢測到,例如視頻編解碼庫、TBB庫等。
查看CmakeLists.txt文件可知,cmake使用pkg-config獲取所需的庫文件的信息,這就是為什麼一定要安裝pkg-config的原因。
如果你看到FFMPEG及其下各子項的值為1,ok,檢測到了,如果為0,核對1、2兩步驟,看是否成功安裝了ffmpeg,以及pkg-config是否可以檢測到ffmpeg:
使用 pkg-config –list-all | grep libavcodec 。
4、 cmkae-gui ../
若你想改變opencv的默認編譯模式,用cmake的圖形模式可以編輯一大堆的編譯參數,例如是否支持IPP、TBB等等,這里比較討厭的是,圖形模式下,你看不到選擇的模塊是否被正確檢測到,要再運行 cmake ../ 查看。
5、 make && make install 默認 opencv將被安裝在 /usr/local/ 下。
6、 編輯環境變數 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 以使得系統可以找到opencv的動態鏈接庫。
到這里,opencv安裝完畢,並可讀寫幾乎全部常見視頻文件,你可以使用g++直接編譯你的常式,如果你的pkg-config配置正確,以下指令可以運行 :
g++ -o my_example my_example.cpp `pkg-config opencv --cflags --libs`
pkg-config opencv --cflags –libs 將返回opencv的頭文件和庫文件的編譯參數。
Ⅶ 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
Ⅷ linux 怎麼用opencv
預備
GCC
CMake
OpenCV
這些都可以在CentOS 6.0的「添加/刪除軟體」裡面找到並安裝。其他Linux版本可以選擇用編譯後安裝或者在Rpmfind尋找二進制安裝版本:
http://rpmfind.net/
CentOS安裝OpenCV 2.4+
下載OpenCV 2.4+壓縮包解壓到一個文件夾里,如:/home/me/opencv/
構建Makefile,在終端輸入,進行構建:
cd /home/me/opencv/
cmake .
進行編譯並安裝,編譯過程可能有些警告發生,請無視這些警告:
make
make check
make install
寫一個OpenCV程序
新建一個簡單的程序,例如:DisplayImage.cpp。
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
//使用cv這個命名空間
using namespace cv;
/* 主函數
*C語言規定main函數只能有兩個參數,
*習慣上將這兩個參數寫成argc和argv。
*第一個代表(傳參個數+1),
*第二個代表傳慘數據。
*一般有兩種寫法:
*main( int argc, char* argv[])
*main( int argc, char** argv)
*/
int main( int argc, char** argv )
{
//建立一個Mat類型的變數image
Mat image;
/* API中有:
* C++: Mat imread(const string& filename, int flags=1 )
* 意思是返回Mat類型數據,第一個參數接受一個string類型的引用,
* 第二個參數接受一個int類型的flags,一般都是1。
*/
image = imread( argv[1], 1 );
//當傳的參數不是一個,或者圖片沒有數據則提示沒有圖片並退出程序
if( argc != 2 || !image.data )
{
printf( "沒有該圖片 \n" );
return -1;
}
//C++: void namedWindow(const string& winname, int flags=CV_WINDOW_AUTOSIZE )
namedWindow( "顯示圖片", CV_WINDOW_AUTOSIZE );
//C++: void imshow(const string& winname, InputArray mat)
imshow( "顯示圖片", image );
//C++: int waitKey(int delay=0)
waitKey(0);
return 0;
}
新的頭文件寫法
同樣的程序,可以用新的頭文件寫法來寫:
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
using namespace cv;
int main( int argc, char** argv ){
Mat image;
image = imread( argv[1]);
if( argc != 2 || !image.data ){
printf("沒有圖片\n");
return -1;
}
namedWindow( "顯示圖片", CV_WINDOW_AUTOSIZE );
imshow( "顯示圖片", image );
waitKey(0);
return 0;
}
創建一個對應的CMake文件
新建一個CMakeLists.txt,內容大概是這樣的:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
生成可執行文件
cd <DisplayImage_directory>
cmake .
make
結果
生成了一個DisplayImage文件,所以運行這個文件,將文件路徑傳進去:
./DisplayImage lena.jpg
你就能看到圖片了