Python OpenCV库
图像处理,怎么能不学OpenCV呢
前言
OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。
OpenCV依赖一些库,比如Numpy,自行安装。

OpenCV应用领域: 1、计算机视觉领域方向 2、人机互动 3、物体识别 4、图像分割 5、人脸识别 6、动作识别 7、运动跟踪 8、机器人 9、运动分析 10、机器视觉 11、结构分析 12、汽车安全驾驶
安装:
|
|
关于M1下安装请看:https://blog.csdn.net/jjw_zyfx/article/details/119851647
读取操作
|
|

PIL库和opencv库在读取图片上的差异:
- opencv:图片的通道顺序为BGR,显示的尺寸为(高/行数,宽/列数,通道数)
- PIL:通道顺序为RGB,显示的尺寸为(宽,高)

获取并修改图像中的像素点
|
|
获取图像属性

图像通道的拆分与合并
|
|
基本变换
图像缩放:resize()
|
|
颜色空间的转换:cv2.cvtColor()
|
|

图像阈值化:cv2.threshold()
图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。
|
|

阈值类型:

旋转:cv2.getRotationMatrix2D()
|
|

图像的矩阵变换:transpose()
旋转
|
|

另一种旋转方法:cv2.flip:
对图像矩阵进行翻转处理,参数可以设置为1,0,-1,分别对应着水平翻转、垂直翻转、水平垂直翻转。
|
|
OpenCV读入图片的矩阵格式是:(h, w, c)。 深度学习中,因为要对不同通道应用卷积,所以会采取另一种方式(c, h, w)
|
|
在深度学习搭建CNN时,往往要做相应的图像数据处理,比如图像要扩展维度,比如扩展成(batch_size,channels,height,width)
|
|
绘制几何图形
|
|
图像的加法
cv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res = img1 + img2。 两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。
|
|
图像加法:
|
|
图像的混合
|
|
图像处理
图像滤波
|
|
视频功能
视频中最常用的就是从视频设备采集图片或者视频,或者读取视频文件并从中采样。所以比较重要的也是两个模块:
- 一个是
VideoCapture,用于获取相机设备并捕获图像和视频,或是从文件中捕获。 - 还有一个
VideoWriter,用于生成视频。 来看例子理解这两个功能的用法,首先是一个制作延时摄影视频的小例子:
|
|
人脸检测:
|
|
….功能太多了…以后慢慢发现吧……
