OpenCV Python学习笔记(4)—— ROI 与泛洪填充,模糊操作, 高斯模糊

1 ROI

  • region of interest
  • 获取 ROI: numpy 指定长宽

2 模糊操作

  • 均值模糊
  • 中值模糊
  • 自定义模糊

2.1 模糊操作的原理

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

import cv2 as cv
import numpy as np


# 均值模糊,去除随机噪声
def blur_demo(image):
    dst = cv.blur(image, (1, 10))
    cv.imshow("blur_demo", dst)


# 中值模糊,去除椒盐噪声
def median_blur(image):
    dst = cv.medianBlur(image, 5)
    cv.imshow("median_blur", dst)


def custom_blur_demo(image):
    kernel = np.ones([5, 5], np.float32) / 25
    dst = cv.filter2D(image, -1, kernel=kernel)
    cv.imshow("custom_blur_demo", dst)


src = cv.imread("resource/color.png")
cv.namedWindow("Test", cv.WINDOW_AUTOSIZE)
cv.imshow("Test", src)
blur_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

2.2 高斯模糊

OpenCV Python学习笔记(4)—— ROI 与泛洪填充,模糊操作, 高斯模糊_第1张图片

import cv2 as cv
import numpy as np


def clamp(pv):
    if pv > 255:
        return 255
    if pv < 0:
        return 0
    else:
        return pv


def gaussian_noise(image):
    h, w, c = image.shape
    for row in range(h):
        for col in range(w):
            s = np.random.normal(0, 20, 3)
            b = image[row, col, 0]  # blue
            g = image[row, col, 1]  # green
            r = image[row, col, 2]  # red
            image[row, col, 0] = clamp(b + s[0])
            image[row, col, 1] = clamp(g + s[0])
            image[row, col, 2] = clamp(r + s[0])
    cv.imshow("noise image", image)


src = cv.imread("resource/color.png")
cv.namedWindow("Test", cv.WINDOW_AUTOSIZE)
cv.imshow("Test", src)

gaussian_noise(src)

dst = cv.GaussianBlur(src, (5, 5), 0)
cv.imshow("Gaussian Blur", dst)

cv.waitKey(0)
cv.destroyAllWindows()

你可能感兴趣的:(数字图像处理Java学习笔记)