当前位置: 首页 > news >正文

5种边界填充

目录

    • 边界填充需要知道的两个东西
      • 什么算边界
      • 边界的范围是多少
      • 举例
    • 复制填充
    • 反射法
    • 反射101法
    • 外包装法
    • 数值填充法
    • 原图
    • 代码
    • 最终效果

边界填充需要知道的两个东西

什么算边界

顾名思义:就是图片的最外边
在这里插入图片描述

边界的范围是多少

根据你自己的需要而设置

举例

这里我选择 (50,50,50,50)
就是上下左右,这四个方向进行了填充,填充50个像素
在这里插入图片描述
如图,上面就是选出所需要填充的范围,这里选择50个像素
在这里插入图片描述
这就是一种填充,顾名思义,按离着边界最近的颜色块的颜色进行填充

复制填充

复制边界线的颜色填充
注意是边界线的颜色,也就是一个像素
在这里插入图片描述

反射法

顾名思义,这个方法就是对称轴复制法
在这里插入图片描述
注意这个反射法反射对称轴,也就是会复制对称轴

反射101法

在这里插入图片描述
注意:这个反射101法不会反射对称轴,也就是不会复制对称轴
和反射法的区别就在于,是否复制对称轴

外包装法

在这里插入图片描述
在这里插入图片描述
外包装,是按图像的离边界的顺序填充的,将边界外的像素视为图像的另一侧

数值填充法

在这里插入图片描述
在图片的四周填上指定的颜色

原图

在这里插入图片描述

代码

import cv2def 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|fBORDER_REFLECT      反射法  将边界外的像素进行镜像反射(包括边界像素)          bcdefa|abcdef|fedcbaBORDER_REFLECT_101  反射101 将边界外的像素进行镜像反射(不包括最外侧的边界像素) bcdef|abcdef|edcbaBORDER_WRAP         外包装  将边界外的像素视为图像的另一侧                     abcdef|abcdef|abcdefBORDER_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()

最终效果

在这里插入图片描述

👇 源码资料获取 · 技术与交流 👇

在这里插入图片描述

http://www.lryc.cn/news/465220.html

相关文章:

  • 鸿蒙网络编程系列7-TLS安全数据传输单向认证示例
  • LangGraph 源码分析 | BaseTool 模板类
  • vulnhub靶场之JOY
  • intel和AMD突然联姻,这操作给我看傻了
  • yolo_face_pose-DataBall 人脸关键点数据集 >> DataBall
  • Unity 山水树木
  • Redis 性能优化选择:Pika 的配置与使用详解
  • 【某农业大学计算机网络实验报告】实验三 IP数据报发送和转发流程
  • Android13 添加运行时权限
  • 官方操刀占用仅6G,Win 11 LTSC详细安装、优化教程来了
  • 【论文精读】RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning
  • 2023-06 GESP C++三级试卷
  • Maven--简略
  • leetcode 刷题day44动态规划Part13( 647. 回文子串、516.最长回文子序列)
  • 华为OD机试真题---关联子串
  • 【OpenAI】第二节(Token)什么是Token?如何计算ChatGPT的Token?
  • GraphRAG + Ollama + Groq 构建知识库 续篇 利用neo4j显示知识库
  • 工业以太网之战:EtherCAT是如何杀出重围的?
  • 轻量级可视化数据分析报表,分组汇总表!
  • 初始Python篇(4)—— 元组、字典
  • C#中正则表达式
  • 【python写一个带有界面的计算器】
  • K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上
  • nginx中的HTTP 负载均衡
  • package.json 里的 dependencies和devDependencies区别
  • 【功能安全】HARA分析中的SEC如何确认
  • 阿里云Docker镜像源安装Docker的步骤
  • 得一微全资子公司硅格半导体携手广东工业大学,荣获省科学技术奖一等奖
  • @SneakyThrows不合理使用,是真的坑
  • 怎么把ppt页面切换为竖页?首推使用这个在线ppt工具!