大马强 发表于 2022-3-27 22:01:39

还是图像处理问题

关于中值滤波的疑问
就是我用中值滤波处理后图像变成全黑了
使用的图片
https://static01.imgkr.com/temp/c2705273b1e94a72bbc46d19c69c3e67.jpg
结果
https://static01.imgkr.com/temp/6fdd40156355411b82b7fd8cc8a9cffe.jpg
{:10_266:} {:10_266:}
代码
import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
from skimage import util# 添加噪声

mg = cv2.imread("./233.jpg", 0)# 读入灰度图
# 添加噪声
noise_gaussian = util.random_noise(img, mode='gaussian')# 高斯
noise_salt = util.random_noise(img, mode='salt')# 椒盐

# # 均值滤波
dst1_gaussian = cv2.blur(noise_gaussian, (5, 5))
dst1_salt = cv2.blur(noise_salt, (5, 5))

# # 中值滤波
# print(noise_gaussian.dtype)
noise_gaussian = noise_gaussian.astype(np.uint8)# 不用就会报错
noise_salt = noise_salt.astype(np.uint8)
dst2_gaussian = cv2.medianBlur(noise_gaussian, 3)
dst2_salt = cv2.medianBlur(noise_salt, 3)

# 显示图像
plt.rcParams['font.sans-serif'] = ['SimHei']# 显示汉字
plt.subplot(221), plt.imshow(dst1_gaussian, "gray"), plt.title("均值滤波处理高斯")
plt.subplot(222), plt.imshow(dst1_salt, "gray"), plt.title("均值滤波处理椒盐")
plt.subplot(223), plt.imshow(dst2_gaussian, "gray"), plt.title("中值滤波处理高斯")
plt.subplot(224), plt.imshow(dst2_salt, "gray"), plt.title("中值滤波处理椒盐")
plt.show()

大马强 发表于 2022-3-27 22:02:35

我看别人也没用到 18 19 行
我一不用就要报错{:10_266:}{:10_266:}

amazed 发表于 2022-3-28 01:02:35

66666666666

C丁洞杀O 发表于 2022-3-28 07:43:01

啊这,这是啥的啊????Python吗?

心驰神往 发表于 2022-3-28 08:00:28

C丁洞杀O 发表于 2022-3-28 07:43
啊这,这是啥的啊????Python吗?

顶一下,拿鱼币{:10_264:}

容嬷嬷 发表于 2022-3-28 08:40:19

刚开始学,还看不懂呢。帮忙顶一下吧

零的零一方 发表于 2022-3-28 08:40:57

{:10_279:}

isdkz 发表于 2022-3-28 08:59:11

中值滤波处理得是数值型吧,可能你加了噪声之后破坏了数据类型,

然后全黑可能是你转换的数值类型不对,用 float32
import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
from skimage import util# 添加噪声

img = cv2.imread("./233.jpg", 0)# 读入灰度图
# 添加噪声
noise_gaussian = util.random_noise(img, mode='gaussian')# 高斯
noise_salt = util.random_noise(img, mode='salt')# 椒盐

# # 均值滤波
dst1_gaussian = cv2.blur(noise_gaussian, (5, 5))
dst1_salt = cv2.blur(noise_salt, (5, 5))

# # 中值滤波
# print(noise_gaussian.dtype)
noise_gaussian = noise_gaussian.astype(np.float32)            # 也可以用下面那种写法
noise_salt = np.float32(noise_salt)
dst2_gaussian = cv2.medianBlur(noise_gaussian, 3)
dst2_salt = cv2.medianBlur(noise_salt, 3)

# 显示图像
plt.rcParams['font.sans-serif'] = ['SimHei']# 显示汉字
plt.subplot(221), plt.imshow(dst1_gaussian, "gray"), plt.title("均值滤波处理高斯")
plt.subplot(222), plt.imshow(dst1_salt, "gray"), plt.title("均值滤波处理椒盐")
plt.subplot(223), plt.imshow(dst2_gaussian, "gray"), plt.title("中值滤波处理高斯")
plt.subplot(224), plt.imshow(dst2_salt, "gray"), plt.title("中值滤波处理椒盐")
plt.show()

hy2009090003 发表于 2022-3-28 09:13:06

真的厉害

大马强 发表于 2022-3-28 09:41:56

C丁洞杀O 发表于 2022-3-28 07:43
啊这,这是啥的啊????Python吗?

是的,图像处理那方面的

大马强 发表于 2022-3-28 09:43:53

isdkz 发表于 2022-3-28 08:59
中值滤波处理得是数值型吧,可能你加了噪声之后破坏了数据类型,

然后全黑可能是你转换的数值类型不对, ...

谢谢哥哥{:10_297:}
页: [1]
查看完整版本: 还是图像处理问题