系列文章目录
opencv-python学习笔记(一)—— opencv介绍
opencv-python学习笔记(二)—— 图片视频读写、绘制几何形状、鼠标事件等
opencv-python学习笔记(三)—— 像素操作、几何变换、性能优化
opencv-python学习笔记(四)—— 图像处理之色彩空间、图像几何变换
前言
工欲善其事,必先利其器
python中常用的视觉库:
- opencv-python
- Scikit-Image
- Scipy
- Python Image Library (Pillow/PIL)
- Matplotlib
- SimpleITK
- Numpy
- Mahotas
学习工业视觉有段时间了,也做了几个项目,在项目中用到了不少视觉算法,但是一般都是现用现找现用,一直没有系统的梳理过视觉方面的东西。趁着最近一段时间不太忙,把python中常用的视觉库梳理一下,结合项目中的一些心得体会,系统的总结一下。
工业中OpenCV用的多一点,它稳定、速度快。所以就从OpenCV开始,结合其官方文档和平时收集的一些资料,详细梳理一下OpenCV中的一些常用算法、应用。后边考虑做Scikit-Image、Scipy的入门教程,以教促学。
ヾ(◍°∇°◍)ノ゙
一、OpenCV是什么?
OpenCV于1999年由英特尔的Gary Bradsky创立,第一个版本于2000年发布。
Vadim Pisarevsky加入了Gary Bradsky,管理英特尔的俄罗斯软件OpenCV团队。
2005年,OpenCV被用于斯坦利,它赢得了2005年DARPA Grand Challenge。
后来,它在Willow Garage的支持下继续积极发展,由Gary Bradsky和Vadim Pisarevsky领导该项目。
OpenCV现在支持大量与计算机视觉和机器学习相关的算法,并且正在不断扩展。
OpenCV支持多种编程语言,如c++、Python、Java等,可在不同的平台上使用,包括Windows、Linux、OS X、Android和iOS。
基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。
OpenCV-Python是OpenCV的Python API,结合了OpenCV c++ API和Python语言的最佳品质。
Python是一种通用编程语言,由Guido van Rossum创立,并很快流行起来,主要是因为它的简单性和代码可读性。
它使程序员能够在不降低可读性的情况下用更少的代码行表达思想。
与C/ c++等语言相比,Python比较慢。
也就是说,Python可以很容易地用C/ c++扩展,这允许我们用C/ c++编写计算密集型代码,并创建可以用作Python模块的Python包装器。
这给了我们两个好处:首先,代码和最初的C/ c++代码一样快(因为它是在后台工作的实际c++代码),其次,用Python编写代码比用C/ c++更容易。
OpenCV-Python是最初的OpenCV c++实现的Python包装器。
OpenCV-Python使用了Numpy,这是一个高度优化的数字操作库,具有matlab风格的语法。
所有OpenCV数组结构都被转换成Numpy数组。
这也使得它更容易与使用Numpy的其他库(如SciPy和Matplotlib)集成。
要想使用OpenCV-Python编写优化代码,必须熟练使用Numpy。
相关资料:
A Quick guide to Python - A Byte of Python
NumPy Quickstart tutorial
NumPy Reference
OpenCV Documentation
OpenCV 论坛
二、OpenCV安装
1. 安装
python中安装OpenCV提供四种依赖包
- 标准桌面环境(Windows、MacOS、几乎所有GNU/Linux发行版)
- 如果只需要主模块
pip install opencv-python
- 如果只需要主模块和contrib 模块
pip install opencv-contrib-python
- 用于服务器环境的软件包
这些包不包含任何gui功能。它们体积较小,适用于更受限制的环境
- 如果只需要主模块(无GUI)
pip install opencv-python-headless
- 如果只需要主模块和contrib 模块(无GUI)
pip install opencv-contrib-python-headless
参考:https://www.cnpython.com/pypi/opencv-python-headless
使用国内镜像下载更快:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:这四个不同的软件包,你应该只选择其中一个。不要在同一环境中安装多个不同的软件包。如果您在同一环境中安装了多个不同的软件包,请使用pip uninstall将它们全部卸载,然后只重新安装一个软件包。
2. 测试
>>> import cv2 as cv
>>> print( cv.__version__ )