在 OpenCV 的 cv2.filter2D() 函数中,您可以通过设置 borderType 和 delta 参数来控制填充 (padding) 方式和间隔采样。

填充 (Padding) 方式

borderType 参数控制如何填充图像边界,常用的填充方式有以下几种:

  1. cv2.BORDER_CONSTANT: 使用常数填充边界,常数值由 borderValue 参数指定。
  2. cv2.BORDER_REPLICATE: 复制边界像素的值进行填充。
  3. cv2.BORDER_REFLECT: 对边界像素进行镜像反射填充。
  4. cv2.BORDER_REFLECT_101: 对边界像素进行镜像反射填充,但是首末两个像素不会被复制。

间隔采样

delta 参数控制采样的间隔。delta 表示每隔多少个像素采样一次,可以是负数、零或正数。默认情况下,delta 为 1,即每个像素都会被采样。如果设置为 2,则每隔一个像素采样一次。

示例代码

import cv2
import numpy as np

# 读取图像
img = cv2.imread('image.jpg', 0)

# 设置填充方式为常数填充,常数值为 0
borderType = cv2.BORDER_CONSTANT
borderValue = 0

# 设置采样间隔为 2
delta = 2

# 创建采样核
kernel = np.ones((3, 3), np.float32)

# 进行滤波操作
filtered_img = cv2.filter2D(img, -1, kernel, delta=delta, borderType=borderType, borderValue=borderValue)

# 显示结果
cv2.imshow('Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述示例中,通过设置 borderType 参数为 cv2.BORDER_CONSTANT 和 borderValue 参数为 0,实现了使用常数填充边界的效果。同时,通过设置 delta 参数为 2,实现了每隔一个像素采样一次的效果。

OpenCV cv2.filter2D() 函数:填充 (Padding) 和间隔采样详解

原文地址: https://www.cveoy.top/t/topic/pVk4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录