ubuntu 14.04 64位 安裝Opencv3.1.0 (包含opencv_contrib模塊)
寫在前邊:
據官方說法,目前還不是太穩定的算法模塊都在opencv_contrib裏邊,由於不穩定,所以不能在release版本里發行,只有在穩定以後纔會放進release裏邊。但是這裏邊有很多我們經常要用的算法,比如SIFT,SURF等(在xfeatures2d 模塊裏邊)。官網提供了說明,可以把opencv_contrib擴展模塊添加編譯到已安裝的opencv3.0.0裏邊,也可以安裝的時候直接把擴展模塊編譯進去一併安裝。
1.依賴關係:
- GCC 4.4.x or later
- CMake 2.8.7 or higher
- Git
- GTK+2.x or higher, including headers (libgtk2.0-dev)
- pkg-config
- Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
- ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
- [optional] libtbb2 libtbb-dev
- [optional] libdc1394 2.x
- [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
注:官方文檔中雖然說其中一些依賴包是可選的,但是最好還是都裝上,以防出問題。
以上依賴包可用以下命令安裝:
1
2
3
|
sudo apt-get install build-essential sudo apt-get install cmake
git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev
python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev |
2.下載源碼:
a.可以從opencv官網直接下載:http://opencv.org/downloads.html
b.也可以從github上clone:
1
2
3
|
cd ~/<my_working_directory> // 比如工作目錄爲opencv即, cd ~ /opencv git
clone https: //github .com /Itseez/opencv .git git
clone https: //github .com /Itseez/opencv_contrib .git |
3.CMake Opencv源碼:
建立一個編譯目錄(例如:/build)把cmake後的文件都放在這裏邊。
1
2
3
|
cd ~ /opencv mkdir build // 建立一個build目錄,把cmake的文件都放着裏邊 cd build // 進入build目錄 |
然後開始cmake,這裏需要注意幾個cmake的參數,比較重要。
1
|
cmake
-D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX= /usr/local -D
OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib /modules/ >
.. |
注:命令中最後的" .. "(空格+兩個點)千萬不要忘記
其中 CMAKE_BUILD_TYPE=Release / Debug
OPENCV_EXTRA_MODULES_PATH 就是用來指定要編譯的擴展模塊,後邊加上剛下載的opencv_contrib模塊的路徑即可。
這裏官方文檔上還給出了其他一些參數,但是我沒用過,這裏就不再描述了。有需要的可以查看http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html
進入上述中新建的build文件目錄中,進行如下命令
eg:
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ -D CMAKE_INSTALL_PREFIX=/usr/local ../opencv
linux文件目錄結構如下
opencv
---opencv
---opencv_contrib
---build
4.把代碼編譯成可執行文件,這裏官方推薦使用多進程編譯,推薦七個進程:
1
|
make -j7 #
並行運行七個jobs,這一步也在build目錄中進行 |
5.安裝。
1
|
sudo make install |
6.運行測試。
我是用python+opencv的,我這裏直接運行opencv自帶的python的例子程序
1
2
|
cd <opencv3.1.0_dir> /samples/python/ python
asift.py |
結果:
參考文獻:
http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html
https://github.com/Itseez/opencv_contrib/blob/master/README.md
轉載:http://www.cnblogs.com/asmer-stone/p/5089764.html
在使用c++語言進行運行
當運行出現如下錯誤時
./a.out: error while loading shared libraries: libopencv_core.so.3.1: cannot open shared object file: No such file or directory
首先進行配置:
進入終端,輸入 sudo vi /etc/ld.so.conf.d/opencv.conf
然後在文件中插入以下文字
/usr/local/opencv/
輸入:wq 退出
在終端中輸入 sudo ldconfig 即可
然後新建文件 vi test.cpp ,在文本中輸入如下代碼
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc,char* argv[])
{
const string WINDOW_NAME = "lena";
const string INPUT_PIC = "lena.jpg";
Mat srcImg = imread(INPUT_PIC);
if(srcImg.empty())
{
cout << "image do not exist" <<endl;
return -1;
}
namedWindow(WINDOW_NAME);
imshow(WINDOW_NAME,srcImg);
waitKey(0);
return 0;
}
注: 圖片和.cpp 在相同的目錄下
進行編譯和鏈接 ,在命令行中輸入
g++ test.cpp -lopencv_core -lopencv_highgui -lopencv_imgcodecs
或者
g++ test.cpp `pkg-config --libs opencv`
然後執行 ./a.out 即可
2. 使用Makefile文件
在當前目錄下建立一個Makefile 文件,然後在文件中添加如下內容:
#first way
main:main.o
g++ -o main main.o -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs
main.o:main.cpp
g++ -c main.cpp
# second way
#CFLAGS = `pkg-config --cflags opencv`
#LIBS = `pkg-config --libs opencv`
#% : %.cpp
# g++ -o $@ $< $(CFLAGS) $(LIBS)
添加完成後,在當前目錄先執行 eg: make main
執行完成後,輸出main 文件,執行 ./main 即可
3. 使用Cmake 的方式
在當前目錄中添加CMakeLists.txt 文件,在文件中添加如下內容:
cmake_minimum_required(VERSION 2.8)
PROJECT (name)
find_package(OpenCV REQUIRED )
set( NAME_SRC
./main.cpp
)
#set( NAME_HEADERS
# include/header.h
#)
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/include )
link_directories( ${CMAKE_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
#add_executable( name ${NAME_SRC} ${NAME_HEADERS} )
add_executable( name ${NAME_SRC} )
target_link_libraries( name ${OpenCV_LIBS} )
添加完成後,在當前目錄中新建一個build目錄,mkdir build,
然後切換到build目錄中,使用 cd build
在build文件夾目錄中 執行cmake 命令,使用示例如下:
cmake .. // .. 代表上一級目錄 ,
make
執行完成後,會有bin 目錄生成,進入bin目錄,cd bin
發現有 name 文件
執行 ./name 命令即可。
相關其他鏈接:
http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
http://www.tuicool.com/articles/EBVNnuV
https://www.linuxhint.com/how-to-install-opencv-on-ubuntu/