正文
0.1 图像基础
- 矩阵
- 分辨率
- 8位整型图像
- 浮点数图像
0.2 通道分离与合并
b, g, r = cv.split(img)
img_new = cv.merge([b, g, r])
0.3 彩色图转灰度图
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
0.4 二值化图像
_, img_bin = cv.threshold(img_gray, th1, th2, cv.THRESH_BINARY)
0.5 图像运算
img = cv.add(img1, img2)
img = cv.addWeighted(img1, alpha, img2, beta, gamma)
img = cv.subtract(img1, img2)
img = cv.multiply(img1, img2)
img = cv.divide(img1, img2)
0.6 图像像素非线性变换
img = cv.convertScaleAbs(img, alpha=1, beta=0)
\[s = b + kr
\]
\[s = a + \frac{ln(r+1)}{b}
\]
\[s = cr^\gamma
\]
实例:图像融合
效果
代码
import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
def show(img):
if img.ndim == 2:
plt.imshow(img, cmap='gray')
else:
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.show()
# 读取图像
A = cv.imread('pic/petal500x500.jpg')
B = cv.imread('pic/hedgehog500x500.jpg')
M = cv.imread('pic/mask500x500.jpg')
show(np.hstack([A, B, M]))
# 合并图像
M = M / 255
As = A * (1 - M)
Bs = B * M
nice = As + Bs*0.8
show(np.uint8(np.hstack([As, Bs])))
show(nice.astype(np.uint8))
说明:
- 未经许可,谢绝转载。
- 本教程为《数字图像处理Python OpenCV实战》的配套代码相关内容。
免费视频教程为0-6章(标题号≤6),可在此处点击观看。
所有课件及源代码可在此处下载:
链接:https://pan.baidu.com/s/198PySe_vebO3e06idHSQ6g
提取码:11o4
有问题可在QQ群(1079300899)指出,进群答案:数字图像处理。在本文评论指出可能导致回复很晚。