一、像素操作与算术运算
1.cv2.split()
2. cv2.merge()
3.cv2.add()
4.cv2.bitwise_and()
5.cv2.bitwise_or()
6.cv2.inRange()
二、仿射变换
1.cv2.getRotationMatrix2D()
2.cv2.warpAffine()
3.cv2.flip()
4.cv2.resize()
三、透视变换
1.cv2.getPerspectiveTransform()
2.cv2.warpPerspective()
四、常用插值方法
cv2.INTER_NEAREST
: 最近邻插值cv2.INTER_LINEAR
: 双线性插值(默认)cv2.INTER_CUBIC
: 双三次插值cv2.INTER_AREA
: 区域插值(缩小图像时效果较好)cv2.INTER_LANCZOS4
: Lanczos插值
五、边界填充方式
cv2.BORDER_CONSTANT
: 常数填充cv2.BORDER_REPLICATE
: 复制边缘像素cv2.BORDER_REFLECT
: 镜像反射cv2.BORDER_WRAP
: 平铺重复
图像矫正练习1.
import cv2
import numpy as np
img = cv2.imread("../images/youhua2.png")
cv2.imshow("original image", img)
# 进行透视变换
# 1、获取透视变换矩阵
# 源图像中的四个点
src = np.array([[180, 120],
[632, 12],
[670, 528],
[90, 466]], dtype="f4")
# 目标图像中的四个点
dst = np.array([[0, 0],
[800, 0],
[800, 640],
[0, 640]], dtype="f4")
M = cv2.getPerspectiveTransform(src, dst)
# 2、进行透视变换
per_img = cv2.warpPerspective(img, M, (800, 640))
cv2.imshow("per_img", per_img)
cv2.waitKey(0)
运行结果:
图像矫正练习2.
import cv2
import numpy as np
img = cv2.imread("../images/image2.png")
cv2.imshow("original image", img)
# 进行透视变换
# 1、获取透视变换矩阵
# 源图像中的四个点
src = np.array([[69, 229],
[360, 107],
[480, 258],
[184, 440]], dtype="f4")
# 目标图像中的四个点
dst = np.array([[0, 0],
[450, 0],
[450, 330],
[0, 330]], dtype="f4")
M = cv2.getPerspectiveTransform(src, dst)
# 2、进行透视变换
per_img = cv2.warpPerspective(img, M, (450, 330))
cv2.imshow("per_img", per_img)
cv2.waitKey(0)
运行结果: