Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理

模糊操作基本原理:

  1. 基于离散卷积
  2. 定义好每个卷积核
  3. 不同卷积核得到不同的卷积效果
  4. 模糊是卷积的一种表象

代码层面知识点

  1. 均值模糊
  2. 中值模糊
  3. 自定义模糊
  4. 意义与应用场合

----------------------------------------------------------------

卷积

均值模糊

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理
此代码与上文无关…

def blur_image(image):                       #均值模糊
        cv.imshow('fruit', image)
        dst = cv.blur(image, (20,15))        #选取一个20×15 卷积核
        cv.imshow('blurred', dst)

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理

中值模糊

中值模糊就是用与卷积框对应像素的中值来替代中心像素的值。中值模糊常用于去除椒盐噪声。
均值模糊是用计算得到的一个新值来取代中心像素的值,而中值模糊是用中心像素周围(或其自身)的值来取代它。

    def median_blur(image):
        cv.imshow('fruit', image)
        dst = cv.medianBlur(image, 5)
        cv.imshow('median_blur', dst)

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理

自定义模糊/锐化

自定义模糊:

def custom_blur(image):
        cv.imshow('image', image)
        kernel1 = np.ones((5,5), np.float)/25
        dst = cv.filter2D(image, -1, kernel1)
        cv.imshow('blurred', dst)

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理

自定义锐化:

def custom_blur(image):
        cv.imshow('image', image)
        kernel1 = np.array(((0,-1,0), (-1,5,-1), (0,-1,0)), np.float)   
        dst = cv.filter2D(image, -1, kernel1)
        cv.imshow('blurred', dst)

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理
经试验,在三维矩阵当中,卷积核为((0,-1,0), (-1,5,-1), (0,-1,0)) 的效果最为理想

------------------------------------------------------------------

利用模糊给图片打码:

def cut(image):
        cut = image[300:384, 250:340]
        return cut


def blur(image):
        blur = cv.blur(image, (50,50))
        return blur


def connect(image):
        image[300:384, 250:340] = blur(cut(image))
        cv.imshow('result', image)


src = cv.imread('/home/pi/Desktop/woman.jpg')
cv.imshow('image', src)
connect(src)

Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理