opencv 图像平滑

高通滤波可以找到图像的边缘。低通滤波可以去除噪音,模糊图像。

opencv 图像平滑_第1张图片

自定义滤波器 cv2.filter2D()

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
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('Averaging')
plt.xticks([]), plt.yticks([])

plt.show()

opencv 图像平滑_第2张图片

 图像模糊(图像平滑)

使用低通滤波器可以达到图像模糊的目的(就是去除图像中的高频成分(比如:噪音,边界)

opencv 图像平滑_第3张图片

cv2.blur() 

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
blur = cv2.blur(img, (5, 5))
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

opencv 图像平滑_第4张图片

高斯模糊 cv2.GaussianBlur()

高斯核可以有效去除高斯噪音

opencv 图像平滑_第5张图片

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
# 0 是指根据窗口大小 (5,5) 来计算高斯函数标准差
blur = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯模糊
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

opencv 图像平滑_第6张图片

 中值模糊 cv2.medianBlur(img,5)

使用像素的中值替代像素的值。这个可以去除椒盐噪声。

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
blur = cv2.medianBlur(img, 5)  # 中值模糊
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

opencv 图像平滑_第7张图片

 

你可能感兴趣的:(opencv,opencv,python)