源码:
import cv2 as cv
import numpy as np
# 均值模糊,均值模糊可以为图像去噪,均值模糊对随机噪声有非常好的效果。
def blur_demo(image):
dst = cv.blur(image, (5, 5)) # 卷积核越长,模糊越厉害。行卷积核是竖向模糊,列卷积核是横向模糊。也可以是正方形的卷积核。
cv.imshow("blur_demo", dst)
# 中值模糊,可以去掉椒盐噪声。
def median_blur_demo(image):
dst = cv.medianBlur(image, 5)
cv.imshow("median_blur_demo", dst)
# 自定义卷积核中的值,上两个API中定义的卷积核中的数值都是opencv定好的,cv2.filter2D()能自定义卷积核里的元素值。
def custom_blur_demo(image):
# kernel = np.ones([5, 5], np.float32) / 25 # 保证卷积运算后的值在0-255之间。
# 注:1. kernel的size一定要是奇数。 2. size不是奇数的话kernel中的各个值加起来也要等于1或0。
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32) # 卷积的另外一个功能:锐化。
# cv.filter2D()
# Parameters:
# src: 原图像。
# ddepth: 目标图像深度,如果没写将生成与原图像深度相同的图像。
# kernel: 卷积核。
dst = cv.filter2D(image, -1, kernel=kernel)
cv.imshow("custom_blur_demo", dst)
print("------------Hello Python--------------")
src = cv.imread("C:/cvtest/0000.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
# blur_demo(src)
# median_blur_demo(src)
custom_blur_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()