图像模糊是指使图像不清晰或不清晰。均值滤波器通常用于去除图像或信号中的噪声。
在此程序中,我们将使用OpenCV-python(cv2)模块的两个功能。.让我们首先查看它们的语法和描述:
1) imread():
它将图像文件的绝对路径/相对路径作为参数,并返回其对应的图像矩阵。
如果标志值为:
1:加载彩色图像。
0:以灰度模式加载图像。
-1:加载图像,包括alpha通道。
如果未给出标志值,则显示原始图像,并给出哪个路径。
2) imshow():
以窗口名称和图像矩阵为参数,以便在具有指定窗口名称的显示窗口中显示图像。
同样在此程序中,我们将使用numpy模块的一个功能。
mean():获取数组并返回数组的平均值。
另外,在此程序中,我们使用数组切片的概念
设A为一维数组:
A [start:stop:step]
start:序列的起始编号。
停止:生成不超过此数字的数字,但不包括此数字。
步骤:序列中每个数字之间的差。
示例
A = [1,2,3,4,5,6,7,8,9,10] print(A[ 1: 5]) Output: [2,3,4,5]
# 导入cv2模块 import cv2 # 导入numpy模块为np import numpy as np # 定义执行功能 # 图像上的均值模糊 def MeanBlur(img,size) : Ic = img # 从一半大小+ 1到最大 # 图像中存在的行数 for i in range(size//2 + 1,Ic.shape [0]): # 从一半大小+1到最大 # 图像中存在的列数 for j in range(size//2 + 1,Ic.shape [1]): # 以指定顺序形式的Ic图像矩阵为子矩阵 N = Ic[i-size//2 : i+ size//2 + 1, j - size//2: j+ size//2 + 1] # 找出子矩阵的均值 mean = np.mean(N) # 将平均值赋予指定的像素坐标 img[i, j] = mean # 返回模糊图像 return img # 驱动程式码 if __name__ == "__main__" : # read an image using imread() function of cv2 # 我们必须通过图像的路径 # 和tha的值是可选的 img = cv2.imread(r'C:\Users\user\Desktop\pic6.jpg',0) # 显示灰度图像 cv2.imshow('original image',img) # 子矩阵的顺序 order = 5 # MeanBlur函数调用 img = MeanBlur(img,order) # 显示平滑图像 cv2.imshow("smooth image",img)
输出结果