(2019-10-14更新,支持直接安装python版本)html
$ sudo apt-get install cmake #若是已经安装过cmake,则该步骤省略 $ sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
# python3支持 $ sudo apt install python3-dev python3-numpy # streamer支持 $ sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev # 可选的依赖 $ sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
能够在官网下载相应版本的OpenCV,主要有Source
和GitHub
方式下载。python
Sources
源文件:
由于官方版本是git上的,有时候可能出现下载失败的状况,全部我将官网下载的源文件分享到百度网盘连接https://pan.baidu.com/s/1Bu4xOiz8zWU_R8Me0T_SIg,提取码:s4sy。linux
或者经过 GitHub
进行下载。c++
$ unzip opencv-4.0.0.zip -d .
$ cd opencv-4.0.0/
$ mkdir build $ cd build/
/usr/local/opencv4
,能够本身修改到本身须要的位置,若是该命令中不加-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4
,则默认各部分分别安装在/usr/local/
目录的include/ bin/ lib/
3个文件夹下.$ cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 ..
命令说明:git
-D OPENCV_GENERATE_PKGCONFIG=YES
:OpenCV4
以上版本默认不使用pkg-config
,该编译选项开启生成opencv4.pc
文件,支持pkg-config
功能。-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4
:指定安装目录。这里cmake命令执行会下载ippicv,须要等待比较长时间才能下载完成。
该cmake命令的结果里能够查看是否支持Python:web
-- Python 2: -- Interpreter: /usr/bin/python2.7 (ver 2.7.6) -- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6) -- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2) -- packages path: lib/python2.7/dist-packages -- -- Python 3: -- Interpreter: /usr/bin/python3.4 (ver 3.4.3) -- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3) -- numpy: /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2) -- packages path: lib/python3.4/dist-packages
代表已经创建了Python绑定。(若是只选择了python3,则该输出结果里只有python3部分)shell
$ make -j6 # runs 6 jobs in parallel
$ sudo make install
安装完成:
vim
配置OpenCV 的 pgk-config环境api
opencv4.pc
文件所在目录:$ sudo find / -iname opencv4.pc [sudo] password for ywq: /usr/local/opencv4/lib/pkgconfig/opencv4.pc find: ‘/run/user/1000/gvfs’: Permission denied /home/ywq/Downloads/OpenCV/opencv-4.0.0/build/unix-install/opencv4.pc
/usr/local/opencv4/lib/pkgconfig/
路径加入PKG_CONFIG_PATH
:$ sudo vim /etc/profile.d/pkgconfig.sh
在文件中加入下面一行:bash
export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH
保存退出后,使用命令激活:
$source /etc/profile
$ pkg-config --libs opencv4 -L/usr/local/opencv4/lib -lopencv_ml -lopencv_dnn -lopencv_video -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_photo -lopencv_gapi -lopencv_imgproc -lopencv_core
配置OpenCV动态库环境——程序执行时加载动态库*.so
的路径。
$ sudo vim /etc/ld.so.conf.d/opencv4.conf
在该文件(多是空文件)末尾加上:
/usr/local/opencv4/lib
再执行如下命令使刚才配置的路径生效:
$ sudo ldconfig
找到编译好的python cv库:
$sudo find / -iname cv2*.so /home/ywq/Downloads/opencv-4.1.1/build/lib/python3/cv2.cpython-35m-x86_64-linux-gnu.so /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so
cv2.cpython-35m-x86_64-linux-gnu.so
就是编译好的python3的opencv库,咱们把它复制到对应python解释器的/path/to/dist-packages/
(系统自带的python解释器)和/path/to/site-packages
(用户安装的python解释器)目录下,以后就能在该python解释器中使用python-opencv
库。
$ sudo ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so
$ ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.7/site-packages/cv2.so
环境配置完成,对咱们安装的OpenCV进行测试:
cd 到/opencv-4.0.0/samples/cpp/example_cmake
目录下,查看当前目录内容:
$ ls -l
total 12
-rw-rw-r-- 1 ywq ywq 1016 11月 18 2018 CMakeLists.txt
-rw-rw-r-- 1 ywq ywq 1119 11月 18 2018 example.cpp
-rw-rw-r-- 1 ywq ywq 294 7月 30 15:31 Makefile
有两种方式进行测试:
由于OpenCV 4.0
须要C++11
支持,且生成的pkg-config
文件名为opencv4.pc
,因此须要对当前目录下的Malefile
文件进行修改:
$ vim Makefile
修改后的内容为:
CXX ?= g++ CXXFLAGS += -c -std=c++11 -Wall $(shell pkg-config --cflags opencv4) LDFLAGS += $(shell pkg-config --libs --static opencv4) all: opencv_example opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS) %.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS) clean: ; rm -f example.o opencv_example
执行make
命令生成可执行文件opencv_example
:
$ make g++ example.cpp -o example.o -c -std=c++11 -Wall -I/usr/local/opencv4/include/opencv4/opencv -I/usr/local/opencv4/include/opencv4 g++ example.o -o opencv_example -L/usr/local/opencv4/lib -lopencv_ml -lopencv_dnn -lopencv_video -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_photo -lopencv_gapi -lopencv_imgproc -lopencv_core -ldl -lm -lpthread -lrt
运行生成的文件opencv_example
:
$ ./opencv_example
电脑打开摄像头,配置成功。
由于咱们更改了opencv的安装路径(/usr/local/opencv4),因此测试前咱们须要在CMakeLists.txt
文件的14行find_package(OpenCV REQUIRED)
前面加上
set(OpenCV_DIR /usr/local/opencv4/lib/cmake/opencv4)
不然执行$ cmake .
命令时会报错:
修改后,执行命令:
$ mkdir build && cd build $ cmake .. $ make $ ./opencv_example
前面已经将Python-opencv库连接到系统自带python3中,因此简单的测试以下:
$ python3 Python 3.5.2 (default, Oct 8 2019, 13:06:37) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 as cv >>> print(cv.__version__) 4.1.1