目录
- 原图
- 代码
- 边界填充需要知道的两个东西
- 什么算边界
- 边界的范围是多少
- 复制填充
咋们废话不多说,直接上代码
原图
代码
import cv2
def img_show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img = cv2.imread('enhanced_color_rgb.jpg')
print('img is shape:', img.shape)
# 定义上下左右各边的像素数
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
# 创建不同类型的边界
# 使用复制边界类型,将边界的最外侧像素行或列进行复制
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
# 使用反射边界类型,将边界外的像素进行镜像反射(包括边界像素)
reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT)
# 使用反射101边界类型,将边界外的像素进行镜像反射(不包括最外侧的边界像素)
reflect_101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT_101)
# 使用环绕边界类型,将边界外的像素视为图像的另一侧
wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_WRAP)
# 使用常数边界类型,用指定的常数值填充边界外的像素
constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_CONSTANT,
value=0)
"""
BORDER_REPLICATE 复制法 将边界的最外侧像素行或列进行复制 a|abcdef|f
BORDER_REFLECT 反射法 将边界外的像素进行镜像反射(包括边界像素) bcdefa|abcdef|fedcba
BORDER_REFLECT_101 反射101 将边界外的像素进行镜像反射(不包括最外侧的边界像素) bcdef|abcdef|edcba
BORDER_WRAP 外包装 将边界外的像素视为图像的另一侧 abcdef|abcdef|abcdef
BORDER_CONSTANT 数值 用指定的常数值填充边界外的像素 0|abcdef|0
"""
import matplotlib.pyplot as plt
# 使用matplotlib显示原始图像和带有不同边界的图像
plt.figure(figsize=(10, 6))
labels = ['Original', 'Replicate', 'Reflect', 'Reflect 101', 'Wrap', 'Constant']
img_list = [img, replicate, reflect, reflect_101, wrap, constant]
for index in range(6):
ax = plt.subplot(230 + index + 1) # 创建子图
plt.imshow(img_list[index]) # 显示图像
plt.title(labels[index]) # 设置标题
# # 设置 x 轴和 y 轴的刻度间隔为50
# ax.set_xticks(range(0, img_list[index].shape[1], 50))
# ax.set_yticks(range(0, img_list[index].shape[0], 50))
# 调整子图间距,使其显示得更清晰
plt.tight_layout()
# 显示图像
plt.show()
边界填充需要知道的两个东西
什么算边界
顾名思义:就是图片的最外边
边界的范围是多少
根据你自己的需要而设置