Ubuntu系統---配置OpenCV


Ubuntu系統---配置OpenCV

目錄

一、Ubuntu下配OpenCV

二、Ubuntu下配python-opencv

 

說明

  上述一、二兩種方式,配置OpenCV還是有區別的。按個人已有知識的理解,“Ubuntu下配OpenCV”是在系統下裝了一個opencv,OpenCV的庫全;“Ubuntu下配python-opencv”是Python可以調用OpenCV的相關庫,OpenCV的庫不全,僅供python用。

 

正文

一、Ubuntu下配OpenCV

  @https://blog.csdn.net/baidu_34971492/article/details/81665538

  下載安裝包,進行一步步的安裝。

  (1)在Opencv官網下載OpenCV3.4.2 Sources, 網址鏈接:https://opencv.org/releases.html,解壓。

  (2)安裝cmake 和 依賴庫。

1.快速安裝cmake(也可以下載cmake安裝包進行安裝)
sudo apt-get install cmake #查看安裝的cmake版本:cmake --version #https://www.cnblogs.com/zhangjiansheng/p/7990028.html sudo apt-get update 2.依賴庫 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

  (3)OpenCV3.4.2安裝。( 前提已安裝好cmake:sudo apt-get install cmake)

(3.1)創建build文件夾
mkdir build cd build

(3.2)cmake一下
#cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=~/opencv-3.4.1/build/installed -DWITH_CUDA=OFF .. (建立opencv-3.4.1/build/installed這幾個文件夾
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 ..

注意:如果已經在新的文件夾中編譯,但是還會出現之前的報錯,把cmakecache.txt刪了再編譯就可
不報錯,繼續。。。

(3.3)make一下
sudo make
sudo make install #執行完畢后OpenCV編譯過程就結束

(3.4)配置一些OpenCV的編譯環境
第一步:系統環境
1.首先將OpenCV的庫添加到路徑,從而可以讓系統找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf

2.只需要在文件末尾添加:
/usr/local/lib 

3.使得剛才的配置路徑生效:
sudo ldconfig

第二步:配置bash
1.打開bash.bashrc

sudo gedit /etc/bash.bashrc # sudo gedit ~/.bashrc

2.在最末尾添加
#@多版本OpenCV切換 https://blog.csdn.net/learning_tortosie/article/details/80594399
#export PKG_CONFIG_PATH=~/opencv-3.4.1/build/installed/lib/pkgconfig
#export LD_LIBRARY_PATH=~/opencv-3.4.1/build/installed/lib
export PKG_CONFIG_PATH=/usr/local/opencv3.4.2/lib/pkgconfig 
export LD_LIBRARY_PATH=/usr/local/opencv3.4.2/lib

3.使配置生效
source /etc/bash.bashrc  # source ~/.bashrc

(3.5)查詢OpenCV版本
pkg-config --modversion opencv  # 如果輸出3.4.2,就表明配置成功。 如果前面沒報錯,輸出不是3.4.2,可能是配置沒生效,重啟電腦
也可以:@https://blog.csdn.net/cocoaqin/article/details/78376382
配置.bashrc

echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/opencv.conf sudo ldconfig printf '# OpenCV\nPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig\nexport PKG_CONFIG_PATH\n' >> ~/.bashrc source ~/.bashrc

  (4)OpenCV3.4.2 測試安裝成功

  測試1:

  cd到opencv3.4.2/samples/cpp/example_cmake目錄下,這個目錄里官方已經給出了一個cmake的example,可以拿來測試下,按順序執行:

cmake .
make
./opencv_example

  看到打開了攝像頭,在左上角有一個hello opencv ,即表示配置成功。

  測試2:

  @https://blog.csdn.net/cocoaqin/article/details/78376382  (還沒實踐)

 

過程記錄:

 

二、Ubuntu下配python-opencv

   查看系統中的python版本,應該有Python2.x 和 Python3.x, 切換到python3.x下(想配 python3.x + OpenCV3.4.2)。

  (1)若無pip,先安裝pip3,執行命令: sudo apt install python3-pip

  (2)安裝依賴項,安裝libopencv-dev依賴包,運行命令: sudo apt install libopencv-dev

  (3)安裝opencv-python庫
    因為系統中已經安裝了python3和pip3,所以直接運行。

         1. 直接安裝最新版:sudo pip3 install opencv-python

    2. 或者可以進行指定版本安裝:pip3 install opencv_python==版本號
    由於我這里是安裝opencv3.4.2,目前的最新版是3.4.2.16
    所以直接執行:pip3 install opencv_python==3.4.2.16

 

  (4)  成功之后,運行python3,進入編譯界面,導入庫查看版本print(cv2._version__)

python3

import cv2

cv2.__version__

備注:
同樣的方法,python2安裝,不好用,如下的好使:
sudo python2 -m pip install opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple

u@u1604:~$ python
Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.0'
>>> 


u@u1604:~$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.0'
>>>


 

 

附:《Ubuntu16.04下安裝opencv3.4.2》
給出了配置編譯opencv的四種方法,值得參考。
從下面四種選擇里面選一種進行編譯
- 配置編譯opencv (無NVIDIA CUDA版本)
- 配置編譯opencv (NVIDIA CUDA版本)
- 配置編譯opencv(NVIDIA Jetson TX2開發板)
- 簡化配置編譯
  @https://blog.csdn.net/liuxiaodong400/article/details/81089058

--------------------------------------------------------------------------------

@https://blog.csdn.net/YuYunTan/article/details/85017065

@https://www.learnopencv.com/install-opencv-3-4-4-on-ubuntu-16-04/

你需要下載opencv3.4.1和opencv_contrib 3.4.1,然后對其解壓,這些基礎命令和操作則不概述。
  將安裝包解壓到某一自己指定的目錄,記為{Opencv_Origin_Dir},目前我指定的目錄解壓到了,/home/tanqiwei/Documents/environment,所以{Opencv_Origin_Dir}對應就是/home/tanqiwei/Documents/environment/opencv-3.4.1

tanqiwei@ubuntu:~/Documents/environment$ pwd
/home/tanqiwei/Documents/environment
tanqiwei@ubuntu:~/Documents/environment$ ls
opencv-3.4.1         opencv_contrib-3.4.1


安裝前的必備包

  這些安裝不算十分完全,我只安裝自己夠用就成的某些包。
  安裝一些必要的庫,還有cmake,git,g++。

sudo apt-get install build-essential 
sudo apt-get install cmake git g++


安裝依賴包

  安裝一些依賴包。

sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install checkinstall yasm libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev libavresample-dev x264 v4l-utils


處理圖像所需的包

sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev 


處理視頻所需包

sudo apt-get install libxvidcore-dev libx264-dev ffmpeg


opencv功能優化

sudo apt-get install libatlas-base-dev gfortran 
   

部分依賴包

sudo apt-get install libopencv-dev  libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6 
sudo apt-get install python-dev python-numpy


可選依賴

sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen


編譯和安裝

  進入OpenCV的源碼解壓目錄,{Opencv_Origin_Dir},我的是/home/tanqiwei/Documents/environment/opencv-3.4.1
  我的opencv_contrib目錄和其同級,/home/tanqiwei/Documents/environment/opencv_contrib-3.4.1均在/home/tanqiwei/Documents/environment下然后在{Opencv_Origin_Dir}下運行

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules -D PYTHON_EXECUTABLE=/usr/bin/python3.5 -D BUILD_EXAMPLES=ON .. 


  這里面過多參數都是屬於cmake的范疇,我這里不去描述,大概就是表示opencv應該安裝在哪里,擴展包在何處,需要開啟什么功能。

  其實編譯過程中會發現,自行下載IPPICV,tiny-dnn等等。

    IPPICV是個鏈接的免費子庫,如果想要禁用IPP加速,CMake的時候,加上-D WITH_IPP=OFF。

  其實很多可能可選的從cmake的編譯輸出看來我們並沒有安裝,比如java,VTK等等,看下面這種類型的輸出就知道了,到時候你只需要對應安裝,然后修改CMake編譯命令,一般來說,opencv編譯過程中,自發也會去尋找這些東西。

-- Checking for module 'gstreamer-base-1.0'
--   No package 'gstreamer-base-1.0' found
-- Checking for module 'gstreamer-video-1.0'
--   No package 'gstreamer-video-1.0' found
-- Checking for module 'gstreamer-app-1.0'
--   No package 'gstreamer-app-1.0' found
-- Checking for module 'gstreamer-riff-1.0'
--   No package 'gstreamer-riff-1.0' found
-- Checking for module 'gstreamer-pbutils-1.0'
--   No package 'gstreamer-pbutils-1.0' found


-- Could NOT find JNI (missing:  JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
-- Could NOT find Pylint (missing:  PYLINT_EXECUTABLE) 
-- Could NOT find Matlab (missing:  MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN) 
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file

-- No preference for use of exported gflags CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported gflags CMake configuration if available.
-- Failed to find installed gflags CMake configuration, searching for gflags build directories exported with CMake.
-- Failed to find gflags - Failed to find an installed/exported CMake configuration for gflags, will perform search for installed gflags components.

-- CERES support is disabled. Ceres Solver for reconstruction API is required.
-- Module opencv_ovis disabled because OGRE3D was not found
-- Caffe:   NO
-- Protobuf:   NO

-- Checking for modules 'tesseract;lept'
--   No package 'tesseract' found
--   No package 'lept' found


  最后會列出其編譯后的模塊列表。

--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core cvv datasets dnn dnn_objdetect dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python_bindings_generator reg rgbd saliency sfm shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    js world
--     Disabled by dependency:      -
--     Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev dnn_modern java matlab ovis python2 python3 viz
--     Applications:                tests perf_tests examples apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI: 
--     QT:                          YES (ver 5.5.1)
--       QT OpenGL support:         YES (Qt5::OpenGL 5.5.1)
--     GTK+:                        NO
--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so)
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8)
--     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver )
--     WEBP:                        build (ver encoder: 0x020e)
--     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.54)
--     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.0.6)
--     JPEG 2000:                   /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1)
--     OpenEXR:                     /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2.2.0)
-- 
--   Video I/O:
--     DC1394:                      YES (ver 2.2.4)
--     FFMPEG:                      YES
--       avcodec:                   YES (ver 56.60.100)
--       avformat:                  YES (ver 56.40.101)
--       avutil:                    YES (ver 54.31.100)
--       swscale:                   YES (ver 3.1.101)
--       avresample:                YES (ver 2.1.0)
--     GStreamer:                   
--       base:                      YES (ver 0.10.36)
--       video:                     YES (ver 0.10.36)
--       app:                       YES (ver 0.10.36)
--       riff:                      YES (ver 0.10.36)
--       pbutils:                   YES (ver 0.10.36)
--     libv4l/libv4l2:              NO
--     v4l/v4l2:                    linux/videodev2.h
--     gPhoto2:                     YES
-- 
--   Parallel framework:            TBB (ver 4.4 interface 9002)
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Intel IPP:                   2017.0.3 [2017.0.3]
--            at:                   /home/tanqiwei/Documents/environment/opencv-3.4.1/build/3rdparty/ippicv/ippicv_lnx
--     Intel IPP IW:                sources (2017.0.3)
--               at:                /home/tanqiwei/Documents/environment/opencv-3.4.1/build/3rdparty/ippicv/ippiw_lnx
--     Lapack:                      YES (/usr/lib/liblapack.so /usr/lib/libcblas.so /usr/lib/libatlas.so)
--     Eigen:                       YES (ver 3.2.92)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
-- 
--   NVIDIA CUDA:                   NO
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/tanqiwei/Documents/environment/opencv-3.4.1/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python (for build):            /usr/bin/python3
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Matlab:                        NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tanqiwei/Documents/environment/opencv-3.4.1/build


  我們可以發現,我們編譯已經成功,可以進行下一步,即make,但是值得注意的是,如果用多核make可能會報錯,為了保險起見,我還是原始的make命令,不加-j。

make


  然后安裝。

sudo make install

  最后最好開啟重啟一次,本人曾安裝過后,虛擬機重啟直接奔潰,無法進入系統內部,主要原因不太清楚,但是進入到了某種圖形模式,說是圖形模式損壞,之后只好從備份的快照中恢復,當然也有當時可能裝少了部分必要依賴項的可能性也說不定,建議安裝的機器內存要大一點,4GB為一般,6GB不錯,8GB很好。
運行測試

  我們運行例子進行測試。你可以選擇任意例子,這里我選擇在我的github的opencv例子進行測試。

git clone https://github.com/tanqiwei/myOpencvStudyCode.git


  大概幾M的內容,然后進入myOpencvStudyCode/LearningOpencv3/chapter2/example2.1
  接着按下面命令

mkdir build
cd build
cmake ..
make
./example2_1 ../data/test.jpg


  你可以發現運行成功,故而咱們安裝順利。會發現顯示圖片窗口,按ESC鍵退出。
重啟后,發現還能開啟,說明虛擬機的16.04的系統安裝就成功了。
安裝過程命令總結

# 安裝及下載,該操作不解釋,都放在一個統一目錄下
# 我的是/home/tanqiwei/Documents/environment
# 也就是在environment文件夾里有opencv-3.4.1和opencv_contrib-3.4.1兩個文件夾

# 安裝必備庫,cmake,git,g++
sudo apt-get install build-essential 
sudo apt-get install cmake git g++
# 安裝依賴項
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install checkinstall yasm libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev libavresample-dev x264 v4l-utils
# 處理圖像所需的包
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev 
# 處理視頻所需的包
sudo apt-get install libxvidcore-dev libx264-dev ffmpeg
# opencv功能優化
sudo apt-get install libatlas-base-dev gfortran 
# 某些依賴包
sudo apt-get install libopencv-dev  libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6 
sudo apt-get install python-dev python-numpy
# 可選依賴項
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

# 進入opencv源碼目錄,注意opencv和opencv_contrib同級,
# 即都屬於同一個主目錄下,我的目錄為/home/tanqiwei/Documents/environment,
# 下面有opencv-3.4.1和opencv_contrib-3.4.1


mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules -D PYTHON_EXECUTABLE=/usr/bin/python3.5 -D BUILD_EXAMPLES=ON .. 
make

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM