def motion_blur(img, degree=10, angle=20):
image = img.copy()
# 这里生成任意角度的运动模糊kernel的矩阵, degree越大,模糊程度越高
M = cv2.getRotationMatrix2D((degree / 2, degree / 2), angle, 1)
motion_blur_kernel = np.diag(np.ones(degree))
motion_blur_kernel = cv2.warpAffine(motion_blur_kernel, M, (degree, degree))
motion_blur_kernel = motion_blur_kernel / degree
blurred = cv2.filter2D(image, -1, motion_blur_kernel)
# convert to uint8
cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)
blurred = np.array(blurred, dtype=np.uint8)
return blurred
if __name__ == '__main__':
img = cv2.imread(r'1.jpg')
blurred = motion_blur(img)
cv2.imwrite(r'2.jpg', blurred)
OpenCV图像运动模糊
最新推荐文章于 2024-08-21 19:45:00 发布