Average Filters in OpenCV
OpenCV makes is easy to implement the average filter by offering a method cv2.blur() method which takes two arguments:
- $src:$ source image we wish to filter
- $kernel:$ filter kernel
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
img = cv2.imread('small_car.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# plot the image
plt.imshow(img)
Implementing the filter on the butterfly image
avg_k3 =cv2.blur(img,(3,3))
avg_k5 =cv2.blur(img,(5,5))
avg_k7 =cv2.blur(img,(7,7))
avg_k9 =cv2.blur(img,(9,9))
fig = plt.figure(figsize=(6, 5))
fig.add_subplot(231)
plt.imshow(img)
plt.title('Original Image', fontsize=6)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
fig.add_subplot(232)
plt.imshow(avg_k3)
plt.title('Average Filter, K=3', fontsize=6)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
fig.add_subplot(233)
plt.imshow(avg_k5)
plt.title('Average Filter, K=5', fontsize=6)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
fig.add_subplot(234)
plt.imshow(avg_k7)
plt.title('Average Filter, K=7', fontsize=6)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
fig.add_subplot(235)
plt.imshow(avg_k9)
plt.title('Average Filter, K=9', fontsize=6)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
plt.tight_layout()