欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Opencv实现图片和视频的加噪、平滑处理

Opencv实现图片和视频的加噪、平滑处理

2024/12/25 6:14:45 来源:https://blog.csdn.net/m0_64588135/article/details/144702721  浏览:    关键词:Opencv实现图片和视频的加噪、平滑处理

图片和视频的加噪、平滑处理

目录

  • 图片和视频的加噪、平滑处理
    • 图片加噪
    • 图片平滑处理
      • 均值滤波
      • 方框滤波
      • 高斯滤波
      • 中值滤波
    • 视频平滑处理

图片加噪


还需要导入numpy库
定义的是椒盐噪声
代码展示:

def nosie_img(img,n=10000):img = img.copy()# 取shape的前两个值,即图片大的高宽h,w = img.shape[:2]for  i in range(n):# 随机生成像素值x,y对应的是h,wx = np.random.randint(1,h)y = np.random.randint(1,w)# 随机生成0,1,如果为0该点为黑点,否则为白点,黑白概率相同if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255#返回图像return imga = cv2.imread('at1.png')
a_noise = nosie_img(a)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_noise',a_noise)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

图片平滑处理


均值滤波

  • 概念:以像素点为中心的周围的n*n个像素值的均值代替当前像素值,n尽量为奇数,边界自动扩展。
  • 格式:cv2.blur(a,(n,n))
    a:图片变量
    (n,n):均值范围

代码展示:

def nosie_img(img,n=10000):img = img.copy()h,w = img.shape[:2]for  i in range(n):x = np.random.randint(1,h)y = np.random.randint(1,w)if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255return imga = cv2.imread('at1.png')
a_noise = nosie_img(a)
a_noise_blur_3 = cv2.blur(a_noise,(3,3))
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_noise',a_noise)
cv2.waitKey(0)
cv2.imshow('a_noise_blur_3',a_noise_blur_3)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

方框滤波

  • 概念:以像素点为中心的周围的nn个像素,normalize True时与均值滤波相同,normalize Fales时,nn个像素值的和大于255时为255,边界自动扩展。
  • 格式:cv2.boxFilter(a,(n,n),normalize=True/Fales)

代码展示:

def nosie_img(img,n=10000):img = img.copy()h,w = img.shape[:2]for  i in range(n):x = np.random.randint(1,h)y = np.random.randint(1,w)if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255return img
a = cv2.imread('at1.png')
a_noise = nosie_img(a)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_noise',a_noise)
cv2.waitKey(0)
#方框滤波
a_noise_boxfilter_T = cv2.boxFilter(a_noise,-1,(3,3),normalize=True)
a_noise_boxfilter_F = cv2.boxFilter(a_noise,-1,(3,3),normalize=False)
cv2.imshow('a_noise_boxfilter_T',a_noise_boxfilter_T)
cv2.waitKey(0)
cv2.imshow('a_noise_boxfilter_F',a_noise_boxfilter_F)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

高斯滤波

  • 概念:以像素点为中心的周围的n*n个像素,加权运算得到最终像素值,边界自动扩展。
  • 格式:cv2.GaussianBlur(a,(n,n),1) 1表示正态分布,确定权重分布

代码展示:

def nosie_img(img,n=10000):img = img.copy()h,w = img.shape[:2]for  i in range(n):x = np.random.randint(1,h)y = np.random.randint(1,w)if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255return imga = cv2.imread('at1.png')
a_noise = nosie_img(a)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_noise',a_noise)
cv2.waitKey(0)
#高斯滤波
a_noise_gauss = cv2.GaussianBlur(a_noise,(3,3),1)
cv2.imshow('a_noise_gauss',a_noise_gauss)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

中值滤波

  • 概念:以像素点为中心的周围的n*n个像素,从小到大排序,取中值为像素值,边界自动扩展。
  • 格式:cv2.medianBlur(a,n)
    n:表示取中值范围,必须为奇数

代码展示:

def nosie_img(img,n=10000):img = img.copy()h,w = img.shape[:2]for  i in range(n):x = np.random.randint(1,h)y = np.random.randint(1,w)if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255return imga = cv2.imread('at1.png')
a_noise = nosie_img(a)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_noise',a_noise)
cv2.waitKey(0)
#中值滤波
a_noise_median = cv2.medianBlur(a,3)
cv2.imshow('a_noise_median',a_noise_median)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

视频平滑处理

代码展示:

# 加噪处理
def nosie_img(img,n=10000):img = img.copy()h,w = img.shape[:2]for  i in range(n):x = np.random.randint(1,h)y = np.random.randint(1,w)if np.random.randint(0,2) == 0:img[x,y] = 0else:img[x, y] = 255return img#视频处理
#读取视频
v = cv2.VideoCapture('test_v.mp4')
# 打不开退出
if not v.isOpened():print("无法打开视频")exit()#打开读取
while True:r, f = v.read()#视频加噪f_noise = nosie_img(f)#视频中值滤波处理f_noise_median = cv2.medianBlur(f_noise,3)if not r:breakcv2.imshow('video',f)cv2.imshow('video_f_noise', f_noise)cv2.imshow('video_f_noise_median', f_noise_median)#点击空格键,退出播放if cv2.waitKey(10) == 32:breakv.release()
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com