在OpenCV中,滤波器用于对图像进行平滑、锐化、边缘检测等操作。以下是一些常用的滤波器及其在OpenCV中的Python代码示例:
-
均值滤波器(平滑图像):
import cv2
import numpy as np读取图像
image = cv2.imread('path_to_your_image.jpg')
应用均值滤波器
blurred_image = cv2.blur(image, (5, 5)) # 使用5x5的核进行滤波
显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows() -
高斯滤波器(平滑图像,减少噪声):
import cv2
import numpy as np读取图像
image = cv2.imread('path_to_your_image.jpg')
应用高斯滤波器
gaussian_blur = cv2.GaussianBlur(image, (5, 5), 0) # 使用5x5的核,标准差为0
显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Gaussian Blurred Image', gaussian_blur)
cv2.waitKey(0)
cv2.destroyAllWindows() -
中值滤波器(去除椒盐噪声):
import cv2
import numpy as np读取图像
image = cv2.imread('path_to_your_image.jpg')
应用中值滤波器
median_blur = cv2.medianBlur(image, 5) # 使用5x5的核
显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Median Blurred Image', median_blur)
cv2.waitKey(0)
cv2.destroyAllWindows() -
双边滤波器(边缘保存平滑):
import cv2
import numpy as np读取图像
image = cv2.imread('path_to_your_image.jpg')
应用双边滤波器
bilateral_filter = cv2.bilateralFilter(image, 9, 75, 75) # 直径9,颜色空间标准差75,坐标空间标准差75
显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Bilateral Filter Image', bilateral_filter)
cv2.waitKey(0)
cv2.destroyAllWindows() -
Sobel边缘检测滤波器:
import cv2
import numpy as np读取图像
image = cv2.imread('path_to_your_image.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)应用Sobel滤波器
sobel_x = cv2.Sobel(gray_image, cv2.CV_64F, 1, 0, ksize=5) # 水平方向
sobel_y = cv2.Sobel(gray_image, cv2.CV_64F, 0, 1, ksize=5) # 垂直方向显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Sobel X', sobel_x)
cv2.imshow('Sobel Y', sobel_y)
cv2.waitKey(0)
cv2.destroyAllWindows()
将 'path_to_your_image.jpg'
替换为您要处理的图像的实际路径。