opencv2中值滤波
时间: 2023-09-12 08:04:47 浏览: 105
在OpenCV中,中值滤波是一种非线性滤波方式,用于减少图像中的噪声。与线性滤波方式不同,中值滤波不是通过加权求均值的方式计算滤波结果,而是用邻域内所有像素值的中间值来替代当前像素点的像素值。在OpenCV中,可以使用`cv.medianBlur()`函数来实现中值滤波。该函数的参数`ksize`表示滤波核的大小,需要注意的是,滤波核大小必须是比1大的奇数,比如3、5、7等。
下面是一个使用中值滤波的示例代码:
```python
import cv2 as cv
def cv_show(name, img):
cv.imshow(name, img)
cv.waitKey(0)
cv.destroyAllWindows()
# 添加椒盐噪声
def add_peppersalt_noise(image, n=10000):
result = image.copy()
# 测量图片的长和宽
w, h = image.shape[:2]
# 生成n个椒盐噪声
for i in range(n):
x = np.random.randint(1, w)
y = np.random.randint(1, h)
if np.random.randint(0, 2) == 0:
result[x, y = 0
else:
result[x, y = 255
return result
img = cv.imread('D:\\dlam.jpg')
if img is None:
print('Failed to read the image')
# 添加椒盐噪声
img1 = add_peppersalt_noise(img)
cv_show('after', img1)
# 中值滤波,可对灰色图像和彩色图像使用
img2 = cv.medianBlur(img1, 3)
cv_show('after1', img2)
# ksize变大图像变模糊
img3 = cv.medianBlur(img1, 9)
cv_show('after2', img3)
```
这段代码首先读取一张图片,并使用`add_peppersalt_noise()`函数添加椒盐噪声。然后,分别使用`cv.medianBlur()`函数对添加了椒盐噪声的图像进行中值滤波处理。可以通过调整`ksize`的大小来观察滤波效果的变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Opencv之图像滤波:5.中值滤波(cv2.medianBlur)](https://blog.csdn.net/qq_49478668/article/details/123485382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文