Python-OpenCV实战一(安装)

 

OpenCV简介

 

用深度学习做图像处理的过程中,我们常常需要用到opencv库,OpenCV是计算机视觉领域应用最广泛的开源工具包,基于C/C++,支持Linux/Windows/MacOS/Android/iOS,并提供了Python,Matlab和Java等语言的接口,因为其丰富的接口,优秀的性能和商业友好的使用许可,不管是学术界还是业界中都非常受欢迎。本文将介绍Python下使用OpenCV的一些基础案例。

 

 

OpenCV的结构

和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3。相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性。不过考虑到和深度学习框架的兼容性,以及上手安装的难度,这部分先以2为主进行介绍。

根据功能和需求的不同,OpenCV中的函数接口大体可以分为如下部分:

- core:核心模块,主要包含了OpenCV中最基本的结构(矩阵,点线和形状等),以及相关的基础运算/操作。

- imgproc:图像处理模块,包含和图像相关的基础功能(滤波,梯度,改变大小等),以及一些衍生的高级功能(图像分割,直方图,形态分析和边缘/直线提取等)。

- highgui:提供了用户界面和文件读取的基本函数,比如图像显示窗口的生成和控制,图像/视频文件的IO等。

如果不考虑视频应用,以上三个就是最核心和常用的模块了。针对视频和一些特别的视觉应用,OpenCV也提供了强劲的支持:

- video:用于视频分析的常用功能,比如光流法(Optical Flow)和目标跟踪等。

- calib3d:三维重建,立体视觉和相机标定等的相关功能。

- features2d:二维特征相关的功能,主要是一些不受专利保护的,商业友好的特征点检测和匹配等功能,比如ORB特征。

- object:目标检测模块,包含级联分类和Latent SVM

- ml:机器学习算法模块,包含一些视觉中最常用的传统机器学习算法。

- flann:最近邻算法库,Fast Library for Approximate Nearest Neighbors,用于在多维空间进行聚类和检索,经常和关键点匹配搭配使用。

- gpu:包含了一些gpu加速的接口,底层的加速是CUDA实现。

- photo:计算摄像学(Computational Photography)相关的接口,当然这只是个名字,其实只有图像修复和降噪而已。

- stitching:图像拼接模块,有了它可以自己生成全景照片。

- nonfree:受到专利保护的一些算法,其实就是SIFT和SURF。

- contrib:一些实验性质的算法,考虑在未来版本中加入的。

- legacy:字面是遗产,意思就是废弃的一些接口,保留是考虑到向下兼容。

- ocl:利用OpenCL并行加速的一些接口。

- superres:超分辨率模块,其实就是BTV-L1(Biliteral Total Variation – L1 regularization)算法

- viz:基础的3D渲染模块,其实底层就是著名的3D工具包VTK(Visualization Toolkit)。

从使用的角度来看,和OpenCV2相比,OpenCV3的主要变化是更多的功能和更细化的模块划分。

 

源码编译安装和使用OpenCV

作为最流行的视觉包,在Linux中安装OpenCV是非常方便的,大多数Linux的发行版都支持包管理器的安装,比如在Ubuntu 16.04 LTS中,只需要在终端中输入:

>> sudo apt install libopencv-dev python-opencv

当然也可以通过官网下载源码编译安装,第一步先安装各种依赖:

>> sudo apt install build-essential

>> sudo apt 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

然后找一个clone压缩包的文件夹,把源码拿下来:

>> git clone opencv/opencv

here you can get the source from https://opencv.org/releases.html

Python-OpenCV实战一(安装)_第1张图片

click Sources ,and download to your PC.

进入opencv下载的文件夹,解压

unzip opencv-3.1.0.zip

然后进入OpenCV文件夹:

>> mkdir release

>> cd release

>> cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

准备完毕,直接make并安装:

>> make

>> sudo make install

这里汇总下我使用的完整命令:

首先安装所有依赖

sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

接着

mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_OPENMP=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -DBUILD_TESTS=OFF -D WITH_V4L=ON ..
make -j32
sudo make install

以上命令打包可以写成:


# install common dependencies: OpenCV
# adpated from OpenCV.sh
version="2.4.13"

echo "Building OpenCV" $version
[[ -d 3rd-party ]] || mkdir 3rd-party/
cd 3rd-party/

if [ ! -d "opencv-$version" ]; then
    echo "Installing OpenCV Dependenices"
    sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

    echo "Downloading OpenCV" $version
    wget -O OpenCV-$version.zip https://github.com/Itseez/opencv/archive/$version.zip

    echo "Extracting OpenCV" $version
    unzip OpenCV-$version.zip
fi

echo "Building OpenCV" $version
cd opencv-$version
[[ -d build ]] || mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON  -D WITH_V4L=ON ..
if make -j32 ; then
    cp lib/cv2.so ../../../
    echo "OpenCV" $version "built."
else
    echo "Failed to build OpenCV. Please check the logs above."
    exit 1
fi

 

 

附加(GPU版):

[ubuntu 16.04 安装 opencv3.4.1 以及 opencv_contrib 3.4.1]

cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=~/Downloads/opencv_contrib-3.4.1/modules -D INSTALL_C_EXAMPLES=OFF -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D CUDA_ARCH_PTX="" -D CUDA_FAST_MATH=ON -D CUDA_ARCH_BIN="5.2" -D WITH_TBB=ON -D WITH_OPENMP=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -DBUILD_TESTS=OFF -D WITH_V4L=ON ..

Python-OpenCV实战一(安装)_第2张图片

然后

 剩下的指令一样。

make -j32
sudo make install

最后做好配置:

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  

 

Windows下的安装也很简单,直接去OpenCV官网下载:

DOWNLOADS | OpenCV

执行exe安装后,会在<安装目录>/build/python/2.7下发现一个叫cv2.pyd的文件,把这个文件拷贝到\Lib\site-packages下,就可以了。Windows下如果只想在Python中体验OpenCV还有个更简单的方法是加州大学尔湾分校(University of California, Irvine)的Christoph Gohlke制作的Windows下的Python科学计算包网页,下载对应版本的wheel文件,然后通过pip安装:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

本书只讲Python下OpenCV基本使用,Python中导入OpenCV非常简单:

import cv2

就导入成功了。

 

Linux 下升级python-opencv

 

pip3 install --upgrade --user opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple/

 

Python-OpenCV实战一(安装)_第3张图片

 

Ubuntu下安装opencv与python-opencv

ubuntu16.04下opencv3.3 GPU(CUDA)加速

从源码编译安装OpenCV并支持GPU加速

OpenCV3源码方式安装教程(最新3.4.1)

你可能感兴趣的:(Python学习,OpenCV)