
Motion blur
When we apply the motion blurring effect, it will look like you captured the picture while moving in a particular direction. For example, you can make an image look like it was captured from a moving car.
The input and output images will look like the following ones:

Following is the code to achieve this motion blurring effect:
import cv2 import numpy as np img = cv2.imread('input.jpg') cv2.imshow('Original', img) size = 15 # generating the kernel kernel_motion_blur = np.zeros((size, size)) kernel_motion_blur[int((size-1)/2), :] = np.ones(size) kernel_motion_blur = kernel_motion_blur / size # applying the kernel to the input image output = cv2.filter2D(img, -1, kernel_motion_blur) cv2.imshow('Motion Blur', output) cv2.waitKey(0)
Under the hood
We are reading the image as usual. We are then constructing a motion blur
kernel. A motion blur kernel averages the pixel values in a particular direction. It's like a directional low pass filter. A 3x3 horizontal motion-blurring kernel would look this:

This will blur the image in a horizontal direction. You can pick any direction and it will work accordingly. The amount of blurring will depend on the size of the kernel. So, if you want to make the image blurrier, just pick a bigger size for the kernel. To see the full effect, we have taken a 15x15 kernel in the preceding code. We then use filter2D
to apply this kernel to the input image, to obtain the motion-blurred output.