Python 中的 OpenCV |运动模糊

原文:https://www.geeksforgeeks.org/opencv-motion-blur-in-python/

这篇文章解释了如何使用 OpenCV 给图像添加模糊。运动模糊是一种特定类型的模糊,用于为图像提供定向模糊效果。

运动模糊滤镜 将运动模糊应用于图像可以归结为在图像上卷积滤镜。下面给出了示例 5*5 过滤器。

纵:

横:

滤镜的大小越大,运动模糊效果就越大。此外,穿过滤波器网格的 1 的方向是期望运动的方向。要在特定矢量方向(例如对角方向)自定义运动模糊,只需沿矢量放置 1 即可创建滤镜。

代码 考虑以下汽车的图像。

代码:用于在图像上应用运动模糊效果的 Python 代码。

# loading library
import cv2
import numpy as np

img = cv2.imread('car.jpg')

# Specify the kernel size.
# The greater the size, the more the motion.
kernel_size = 30

# Create the vertical kernel.
kernel_v = np.zeros((kernel_size, kernel_size))

# Create a copy of the same for creating the horizontal kernel.
kernel_h = np.copy(kernel_v)

# Fill the middle row with ones.
kernel_v[:, int((kernel_size - 1)/2)] = np.ones(kernel_size)
kernel_h[int((kernel_size - 1)/2), :] = np.ones(kernel_size)

# Normalize.
kernel_v /= kernel_size
kernel_h /= kernel_size

# Apply the vertical kernel.
vertical_mb = cv2.filter2D(img, -1, kernel_v)

# Apply the horizontal kernel.
horizonal_mb = cv2.filter2D(img, -1, kernel_h)

# Save the outputs.
cv2.imwrite('car_vertical.jpg', vertical_mb)
cv2.imwrite('car_horizontal.jpg', horizonal_mb)

输出

垂直模糊:

水平模糊: