cv2filter2D函数中如何设置padding并进行间隔采样?
在cv2.filter2D()函数中,可以通过设置borderType参数来控制padding的方式。常用的padding方式有以下几种:
- cv2.BORDER_CONSTANT:使用常数填充边界,常数值由borderValue参数指定。
- cv2.BORDER_REPLICATE:复制边界像素的值进行填充。
- cv2.BORDER_REFLECT:对边界像素进行镜像反射填充。
- cv2.BORDER_REFLECT_101:对边界像素进行镜像反射填充,但是首末两个像素不会被复制。
同时,可以通过设置delta参数来控制采样的间隔。delta表示每隔多少个像素采样一次,可以是负数、零或正数。默认情况下,delta为1,即每个像素都会被采样。如果设置为2,则每隔一个像素采样一次。
以下是一个示例代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0)
# 设置padding方式为常数填充,常数值为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,实现了每隔一个像素采样一次的效果
原文地址: https://www.cveoy.top/t/topic/icFa 著作权归作者所有。请勿转载和采集!