Python常用包

openCV

常用函数

读取图片/帧

1
2
3
4
cv2.imread('文件路径',参数)
# 读取图片
cv2.VideoCapture()
# 从摄像头、视频帧读取帧图片

cv2.imread()参数

0 灰度图 cv2.IMREAD_GRAYSCAL

1 默认 三通道 cv2.IMREAD_COLOR OpenCV 以 BGR 模式读取 可用cv2.cvtColor转换为RGB

-1 原始格式 cv2.IMREAD_UNCHANGED

保存图片

1
cv2.imwrite('output.jpg', image)

展示图片

1
cv2.imshow('窗口名称',图片路径)

图像预处理

1
2
3
4
5
6
7
cv2.cvtColor(image,参数)
# 色彩转换
# 参数与cv2.imread()参数相同

cv2.resize(image,图像大小)
# 调整图像大小
# 图像大小参数可以是简单的(200,500),也可以是更为复杂的方法

图像边缘检测

1
2
3
cv2.Canny(image,阈值1,阈值2)
# 边缘检测
# 阈值较小时,能够捕获更多的边缘信息

视频处理

1
2
3
4
5
6
7
8
cv2.VideoCapture('路径')
# 从摄像头、视频帧读取帧图片(视频)

cv2.VideoWriter('路径')
# 将视频帧保存为视频

cv2.VideoCapture.read()
# 从视频帧读取一帧图像

图像生成/图像绘制

1
2
3
4
5
cv2.rectangle(image, (100, 100), (200, 200), (0, 255, 0), 2)
# 在图像上绘制一个矩形,左上角坐标为 (100, 100),右下角坐标为 (200, 200)

cv2.putText(image, 'Hello, OpenCV!', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
# 在图像上添加文本,文本内容为 'Hello, OpenCV!',位置为 (50, 50)

图像特征提取

菜鸟教程:https://www.runoob.com/opencv/opencv-image-basic.html

学习资源(图片):https://opencv.org/releases/

numpy

方法

1
2
3
astype(数据类型)
src_float = src.astype(np.float32)
# 创建一个新的数组,该数组的数据类型由传入的参数指定,而原数组的数据类型保持不变

对数

1
2
3
4
5
6
7
8
9
10
11
12
# 使用 numpy 模块进行数组的对数变换
# arr = np.array([1, 10, 100])
arr = np.array(100)

# 自然对数e
ln_arr = np.log(arr)

# 常用对数10
log10_arr = np.log10(arr)

# 以 2 为底的对数
log2_arr = np.log2(arr)

NumPy数据类型

np.float32

matplotlib

绘制多图

菜鸟教程:https://www.runoob.com/matplotlib/matplotlib-subplots.html

subplot() 需要指定位置

subplots() 可以一次生成多个

1
2
3
4
5
6
7
8
9
# 创建一些测试数据
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# 创建一个画像和子图 -- 图1
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
plt.show()

fig 画布 Figure

ax 画布中的子区域 Axes

数学

图像

灰度图像 灰度值 [0-255] [暗,亮]

彩色图像 本身不存在单一的 “灰度值” 概念 三通道RGB

彩色图像转换为灰度图像 加权平均(最佳)、平均值、最大值、最小值

对数变换

题源:试编写一个对数变换的python 子程序,变换公式为s=a+c*lg(r+1),子函数的输入参数有:图像src,常量a和c,输出参数为变换后的图像dst。

s=a+clg(r+1)s=a+c*lg(r+1)

  • s:它代表变换后图像像素的强度值。经过对数变换之后,原本图像中每个像素的原始值会被转换为这个新的值,进而改变图像的整体对比度和亮度分布。
  • r:指的是原始图像中像素的强度值。在数字图像里,像素强度值一般处于 0 到 255 这个区间,0 代表黑色,255 代表白色。
  • a:这是一个常量,在对数变换里起到偏移的作用。它能够对变换后的图像整体亮度进行调整。要是 a 的值增大,那么变换后图像的整体亮度就会提高;反之,整体亮度则会降低。
  • c:同样是一个常量,其作用是对变换的比例进行控制。c 值越大,变换后的图像对比度就越高;c 值越小,对比度也就越低。

编程实现常见的锐化滤波,观察锐化滤波的效果。需实现滤波如下:Robert算子,Prewitt算子,Sobel算子。