import cv2 as cv
import numpy as np
def motion_blur(image, kernel_size, angle):
M = cv.getRotationMatrix2D((kernel_size // 2, kernel_size // 2), angle, 1)
motion_blur_kernel = np.diag(np.ones(kernel_size))
motion_blur_kernel = cv.warpAffine(motion_blur_kernel, M, (kernel_size, kernel_size))
motion_blur_kernel = motion_blur_kernel / kernel_size
blur = cv.filter2D(image, -1, motion_blur_kernel)
cv.normalize(blur, blur, 0, 255, cv.NORM_MINMAX)
return blur
if __name__ == "__main__":
img = cv.imread("./data/bird.jpg")
cv.imshow("src", img)
while True:
k_size = np.random.choice(np.arange(5, 12, 2))
ang = np.random.choice(np.arange(-45, 45))
res = motion_blur(np.copy(img), k_size, ang)
cv.imshow("res", res)
if cv.waitKey() & 0xFF == ord('q'):
break