目录
1.OpenCV简介
2.OpenCV安装
3.检查OpenCV是否安装成功
4.OpenCV模块
5.学习技巧
1.OpenCV简介
OpenCV(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,主要用于图像处理、计算机视觉和机器学习等领域,实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有力的研究工具。在这里我们要区分图像处理和计算机视觉两个概念:图像处理侧重于“处理”图像–如增强,还原,去噪,分割等等;而计算机视觉重点在于使用计算机来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标。
OpenCV-Python库提供了大量的函数和类,用于图像加载、保存、显示、绘制、变换、滤波、特征检测、视频处理等。它支持多种图像格式,包括常见的JPEG、PNG、BMP等,也支持通过摄像头或视频文件获取实时视频流。OpenCV-Python还提供了一些机器学习算法的实现,如人脸识别、目标检测、图像分类等。
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS, 如今也提供对于C#、Ch、Ruby,GO的支持。
OpenCV最初于1999年由Intel公司的俄罗斯一团队发起建立,并于2000年以BSD许可证的形式发布,如今由Willow Garage公司提供支持。到目前(2023年9月)最新是4.x版本。
2.OpenCV安装
因为本文学习主要是使用OpenCV提供的python接口,所以这里也是仅介绍python版OpenCV的安装。python安装opencv,需要使用以下安装命令:
#安装OpenCV的python库:
pip install opencv-python
#安装指定的OpenCV版本:
pip install opencv-python==3.4.2.16
#使用国内镜像源安装:
pip install opencv-python==3.4.2.16 -i https://pypi.tuna.tsinghua.edu.cn/simple
说明:
- opencv-python表示python版的opencv接口模块,使得开发者可以使用Python进行图像处理和计算机视觉的开发工作。。
- opencv-python需要依赖numpy库,pip install numpy。
3.安装指定版本opencv-python==3.4.2.16,因为此版本之后,一些经典算法被申请了专利,做了很大限制。
4.python版本:建议用python 3.7或者3.6版本,高于3.7可能无法使用安装opencv-python==3.4.2.16版本。
5.如果要用到SIFT和SURF等进行特征提取时,还需要安装:
pip install opencv-contrib-python==3.4.2.16
3.检查OpenCV是否安装成功
import cv2
# 导入图片
img = cv2.imread('close.png')
cv2.imshow('image', img)
# 按任意键,关闭弹框
cv2.waitKey(0)
cv2.destroyAllWindows()
使用该代码读取一张图像,能正确显示即表示安装成功。
4.OpenCV模块
OpenCV有很多模块,最基本的模块core、hightgui、imgproc。模块分布如下所示:
core模块:实现了最核心的数据结构及基本算法,如绘图函数、数组操作相关函数等。
highgui模块:实现了视频与图像的提取、显示和存储等。
imgproc模块:实现了图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等。
进阶高层次的方向,opencv也有相关的模块:
feature2d模块:用于提取图像特征以及特征匹配,nonfree(非免费即收费)模块实现了一些专利算法,如sift特征。而opencv-python==3.4.2.16版本,都是免费模块,没有收费模块。
objdetect模块:实现了一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用cascade、classification(级联分类)和latent SVM等。
stitching模块:实现了图片的拼接功能,如遥感影像拼接。
FLANN模块(Fast Library for Appproximate Nearest Neighbors):包含了快速近似最近邻搜素FLANNel和聚类Clustering算法。
ml模块:机器学习模块(SVM、决策树、Boosting等等)
photo模块:包含图像修复和图像去噪两部分。
video模块:针对视频处理,如背景分离、前景检测、对象跟踪等。
calib3d模块(即Calibrain 校准 3D),主要是相机校准和3d重建相关的内容,包含了基本的多视角几何算法、单个立方体摄像头标定,物体姿态估计,立体相似性算法,3d信息的重建等。
G-API模块:包含超高效的图像处理pipeline引擎。
5.学习技巧
可以使用dir()函数和help函数帮助我们查询OpenCV-Python模块的更多知识。dir(cv2)可以帮助我们快速查询OpenCV的类和函数,help(cv2)可以帮助我们快速查找OpenCV中的模块。
大写字母对应的是OpenCV中的类.
小写的对应的是OpenCV中的方法。