视频的抓取与处理
0. 准备工作,下载内容
*pyqt5
*opencv: pip install opencv-python
*opencv: pip install opencv-contrib-python
*pyqt5-tools : pip install pyqt5-tools
----
numpy : pip install numpy
scipy : pip install scipy
1. 图像的表示与基本处理
numpy
cv2::Mat ----- numpy : 二维向量 ; 图像还可以表示为张量(Tensorflow + Pytorch) ,张量可以求导
1.1. 读取一副图像
opencv: imread —— 读一个文件
imwrite —— 写一个文件
1.2. 图像的表示使用的是numpy中的数组数据结构
1.3. 数组操作完成图形的核心处理
numpy.ndarray类的使用
图像是三维(二维)数组:
- 0-d:height 图像的高
1-d:width 图像的宽
2-d:channel 图像的通道
- 像素的深度:像素的颜色表示:颜色空间 : 向量(R, G, B,A): 还有其他的颜色空间
- 通常的颜色空间:RGBA颜色空间 (opencv:颜色深度:颜色分量,每个分量的类型) - 数组在python使用ndarray封装
1.4. 构造ndarray,保存
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名称 | 描述 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
import cv2
import numpy
img = numpy.ndarray( shape=(500, 500, 3), dtype=numpy.uint8)
cv2.imwrite("dd.png", img)
运行结果
1.5. 使用ndarray的函数修改图像的数据
比如:fill
1.6. ndarray像素访问:数组下标
ndarray[]
-
[] 整数或者数组
[h, w, c] BGR : 有别于Qt中RGB的表示方式
0:blue
1:green
2:red -
函数: slice(begin=0, end=-1, step=1): 没有
表达式方式 begin: end : step -
逻辑数组
import cv2
import numpy as np
img = cv2.imread("00003.jpg")
#------图像的基本操作
img[:,