Ubuntu16.04安裝OpenCV3.4.2
阿新 • • 發佈:2019-02-15
1. OpenCV3.4.2 下載
2. 安裝準備
//軟體源更新
sudo apt-get update
3. 安裝 gcc 和 g++ 開發環境
sudo apt-get install build-essential
檢視 gcc 版本 然後安裝 統一版本的 g++
gcc --version
安裝 g++
sudo apt-get install g++-4.4
檢視 g++ 版本
g++ --version
4. 安裝構建OpenCV的相關工具
//安裝cmake、git和pkg-config
sudo apt-get install cmake git pkg-config
5. 安裝常用影象工具包
//安裝jpeg格式影象工具包
sudo apt-get install libjpeg8-dev
//安裝tif格式影象工具包
sudo apt-get install libtiff5-dev
//安裝JPEG-2000影象工具包
sudo apt-get install libjasper-dev
//安裝png影象工具包
sudo apt-get install libpng12-dev
6. 安裝視訊I/O包(注意最後一個包的數字“4”後面是“L”)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
7. 安裝gtk2.0(樹莓派很可能下載錯誤,更換中科大或者清華源即可,ubuntu有可能出現包版本過高的情況,需要將依賴包降級安裝)
sudo apt-get install libgtk2.0-dev
8. 安裝優化函式包
sudo apt-get install libatlas-base-dev gfortran
9. 解壓opencv-3.4.2,並在目錄下建立Release資料夾
10. 在終端進入Release資料夾
~$ cd /home/nic/opencv-3.4.2/Release
11. CMake配置編譯
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
如果以下錯誤:
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
執行以下指令:
sudo apt-get install qt5-default
12. Make編譯
sudo make
13. 安裝
sudo make install
14. 環境配置新增庫路徑
sudo gedit /etc/ld.so.conf.d/opencv.conf
#開啟後可能是空檔案,在檔案內容最後新增
/usr/local/lib
15. 更新系統庫
sudo ldconfig
16. 配置bash,執行如下命令
sudo gedit /etc/bash.bashrc
# 在末尾新增
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
17. 儲存退出,然後執行如下命令使得配置生效
source /etc/bash.bashrc
# 啟用配置然後更新database
sudo updatedb
18. 在CLion中測試
- 建立CMakeLists.txt檔案
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
add_executable(demo main.cpp)
target_link_libraries( demo ${OpenCV_LIBS} )
- 建立Main.cpp檔案
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image;
# 必須使用絕對路徑
image = imread("/home/nic/20171125154428073.png");
if ( image.empty() )
{
cout<<"No image data!"<< endl;
return -1;
}
namedWindow("Display Image");
imshow("Display Image", image);
waitKey(0);
return 0;
}