图像滤波是通过改变像素的颜色和亮度来修改图像的过程。它还用于增加图像的亮度和对比度。在本教程中,我们将学习几种类型的滤波器。
OpenCV提供 bilateralFilter() 函数来对图像应用双边滤波器。双边滤波器可以很好地减少不需要的噪声,同时保持边缘清晰。函数的语法如下所示:
cv2.bilateralFilter(src, dst, d, sigmaSpace, borderType)
考虑以下示例:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\baloon.jpg',1)
kernel = np.ones((5,5),np.float32)/25
blur = cv2.bilateralFilter(img,9,75,75)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Bilateral Filter')
plt.xticks([]), plt.yticks([])
cv2.imshow("Image",blur)
输出
我们可以使用 boxfilter() 函数来执行此滤波操作。它类似于平均模糊操作。
函数的语法如下所示:
cv2. boxfilter(src, dst, ddepth, ksize, anchor, normalize, bordertype)
考虑以下示例:
import cv2
import numpy as np
# using imread('path') and 0 denotes read as grayscale image
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\baloon.jpg',1)
img_1 = cv2.boxFilter(img, 0, (7,7), img, (-1,-1), False, cv2.BORDER_DEFAULT)
#This is using for display the image
cv2.imshow('Image',img_1)
cv2.waitKey(3) # This is necessary to be required so that the image doesn't close immediately.
#It will run continuously until the key press.
cv2.destroyAllWindows()
输出
它将图像与内核组合在一起。我们可以使用 Filter2D() 方法对图像执行此操作。函数的语法如下所示:
cv2.Filter2D(src, dst, kernel, anchor = (-1,-1))
考虑以下示例:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\baloon.jpg',1)
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Filter2D')
plt.xticks([]), plt.yticks([])
plt.show()
输出
本文链接:http://so.lmcjl.com/news/18365/