OpenCV在ubuntu下的編譯安裝
1 原始碼下載
OpenCV官網:https://opencv.org/
github地址: https://github.com/opencv/opencv/releases/tag/3.4.0
2 安裝依賴
首先看官方的安裝說明,這個非常有必要,官方寫的比較好,基本按照官方說明進行操作就可以了。
OpenCV必要的工具包,如下圖
安裝依賴
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
檢查自己安裝的gcc、cmake的版本是否太低。
3 編譯安裝
解壓原始碼
tar xvzf opencv-3.4.0.tar.gz
在原始碼外建立一個編譯資料夾,不要直接在原始碼資料夾裡面操作,以防亂了原始碼,對後續開發不利
mkdir build
進入建立的資料夾
cd build/
執行cmake,生成makefile
cmake ../opencv-3.4.0 -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local
編譯
make
安裝
sudo make install
檢視安裝結果
pkg-config --cflags --libs opencv
4 配置
安裝完後配置
sudo gedit /etc/ld.so.conf.d/opencv.conf
開啟檔案可能是空白的,沒有關係,繼續下一步,在檔案末尾新增
/usr/local/lib
使配置生效
sudo ldconfig
新增環境變數
sudo gedit /etc/bash.bashrc
在檔案最後新增
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
使環境變數生效
source /etc/bash.bashrc
5 例程
寫一個簡單的測試程式 displayImage.cpp
#include <opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", CV_WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; }
編寫 CMakeLists.txt
# cmake needs this line
cmake_minimum_required(VERSION 2.8)
# Define project name
project(display_image)
# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)
# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
if(CMAKE_VERSION VERSION_LESS "2.8.11")
# Add OpenCV headers location to your include paths
include_directories(${OpenCV_INCLUDE_DIRS})
endif()
# Declare the executable target built from your sources
add_executable(display_image displayImage.cpp)
# Link your application with OpenCV libraries
target_link_libraries(display_image ${OpenCV_LIBS})
執行cmake,生成makefile
cmake .
編譯
make
執行
./display_image yichan.jpeg
如下圖