【OpenCV】(四)—— 边界填充

news2024/11/25 0:35:22

在OpenCV的图像处理中,边界填充主要用于在图像边缘添加额外的像素。这项技术在多种图像处理任务中都有重要的应用,包括但不限于卷积操作、图像缩放、形态学操作等。

opencv中边界填充的主要方法为copyMakeBorder,其函数原型如下:

cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]]) → dst

参数说明

  • src:输入图像。

  • top:在图像顶部添加的边界宽度。

  • bottom:在图像底部添加的边界宽度。

  • left:在图像左侧添加的边界宽度。

  • right:在图像右侧添加的边界宽度。

  • borderType
    

    :边界类型,常见的有:

    • cv2.BORDER_CONSTANT:常数填充(用一个固定的值填充边界)。
    • cv2.BORDER_REFLECT:反射填充(镜像边缘像素)。
    • cv2.BORDER_REFLECT_101cv2.BORDER_DEFAULT:反射填充,但不包括最边缘的像素。
    • cv2.BORDER_REPLICATE:复制边缘像素。
    • cv2.BORDER_WRAP:循环填充(将图像的另一端的像素值复制到边界处)。
  • dst(可选):输出图像,如果未指定,则自动创建。

  • value(可选):当 borderTypecv2.BORDER_CONSTANT 时,用于指定填充的常数值,默认是黑色(0, 0, 0)。

img = cv2.imread("cat.jpg")
# 填充大小
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)
reflect101 = 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)
# 导入matplotlib更方便使用子图展示
import matplotlib.pyplot as plt
plt.subplot(231),plt.imshow(img),plt.title('RORGINAL')
plt.subplot(232),plt.imshow(replicate),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect),plt.title('REFELECT')
plt.subplot(234),plt.imshow(reflect101),plt.title('REFELECT_101')
plt.subplot(235),plt.imshow(wrap),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant),plt.title('CONSTANT')

大概观察一下填充的边界结果就能够理解每种填充方法是怎么样的原理:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一道逻辑题

1、有一个水无限多的是水塘.只有两个水瓶.一个5升一个6升.如何从水塘里用这两个水瓶取出3升水?

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13目录1. The Cognitive Capabilities of Generative AI: A Comparative Analysis with Human Benchmarks2. WALL-E: World Alig…

Postman 如何测试入参是文件类型(File)参数接口

Postman 如何测试 File 类型参数 前提背景测试步骤1、打开 Postman 选择 POST 方法输入调用地址2、参数选择 Body 下的 form-data3、KEY 选择 File 选项,并填写 file 前提背景 springboot 项目,接口的参数是 File 类型,需要通过 Postman 测试…

链表题, 反转链表 , 链表的中间结点 , 删除链表的倒数第 N 个结点 , 移除链表元素

文章目录 206. 反转链表203. 移除链表元素876. 链表的中间结点LCR 021. 删除链表的倒数第 N 个结点 206. 反转链表 题目链接 思路: 将原链表的结点,从头到尾一个个地拿下来头插到一个新链表中,这个新链表起始时为一个空链表。 class Solutio…

同三维T80001HK4 四路4K30HDMI H.264编码器

4路同时编码,带4路3.5外置音频 同三维T80001HK4四路4K30HDMI H.264编码器 同三维T80001HK4用于高清视频信号(4K30Hz)编码及网络传输的硬件设备,采用最新高效H.264高清数字视频压缩技术,具备稳定可靠、高清晰度、低码率…

408 14——42题

题目: 某网络中的路由器运行OSPF路由协议,题42表是路由器R1维护的主要链路状态信息(LSI),题42图是根据题42表及R1的接口名构造出来的网络拓扑。 请回答下列问题。 1)本题中的网络可抽象为数据结构中的哪种逻辑结构? 2)针对题42表中的内容&am…

C++ 类和对象-改

在C中,类(Class)是用户自定义的数据类型,用来封装数据和功能的结合。而对(Object)是类的实例,通过类的定义可以创建多个对象。C是一种面向对象编程语言,类和对象是其核心概念。 1. …

前端开发基础NodeJS+NPM基本使用(零基础入门)

文章目录 1、Nodejs基础1.1、NodeJs简介1.2、下载安装文件1.3、安装NodeJS1.4、验证安装2、Node.js 创建第一个应用2.1、说明2.2、创建服务脚本2.3、执行运行代码2.4、测试访问3、npm 基本使用3.1、测试安装3.2、配置淘宝npm镜像3.3.1、本地安装3.3.2、全局安装3.4、查看安装信…

项目总思路

一、模型选择 高性能服务器一般用到的是 Reactor 模型,即事件驱动模型。 1、模型一:单 Reactor 单线程模型 只有一个线程会造成性能瓶颈。 适用场景:客户端少,业务处理快速。 2、模型二:单 Reactor 多线程模型 即…

栈——单调栈

题目描述 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 输入格式 第一行包含整数 N (1≤N≤10^5),表示数列长度。 第二行包含 N 个整数,表示整数数列。1≤ai≤10^9。 输出格式 共一…

git规范化开发

特性分支开发 以前使用git基本都是随心所欲的用,commit的信息比较随便,所以有时git分支结构有时显得混乱,最近标准化开发的过程中接触了特性分支开发。 何为特性分支,按我的理解,就是每一次代码的修改提交&am…

Linux操作系统学习——常见指令集合

本篇博客是对于linux系统学习的初步认识,了解一些常见指令以及基础知识 ls指令 ls/ls -l :只显示文件名/显示更多文件的属性,此时注意最后一行开头位置字母为d就代表显示的是目录的文件属性,还有一点就是:ls -l 默认查看当前目录…

解锁5 大无水印热门短视频素材库

想让你的抖音视频更出彩吗?想知道那些爆款视频的素材源头吗?快来了解以下 5 个超棒的视频素材下载平台。 蛙学网 国内的视频素材佼佼者,有大量 4K 高清且无水印的素材,自然风光、情感生活等类别任你选,不少还免费&…

利用 NIM 平台上的生成式 AI模型,根据描述生成图片

以下是一个使用 NIM 平台的生成式 AI模型构建的简单 demo。这个 demo 实现了文生图,通过解析用户需求来判断是否需要进行画图。这里使用 Python 和 FastAPI框架来搭建一个简单的 web 应用。 项目结构 work/ │ ├── images/ ├── chat.py └── chat.html 安…

PostgreSQL技术内幕14:从插件来看PG扩展性-FDW插件

文章目录 0.简介1.FDW介绍2.使用方式2.1 创建过程2.1.1 创建插件2.1.2 创建 Foreign Server2.1.3 创建 User Mapping(外部服务器映射,本地文件可以不需要)2.1.4 创建外部表 2.2 查询流程 3.源码分析3.1 扩展接口分析3.2 和其他部分关联3.2.1 和计划的关联…

AI智能助理在企业内部的8大应用场景

一、概述 1.1 AI智能助理核心功能概览 1.2 AI智能助理业务应用价值 二、详解 AI智能助理在企业内部办公方向的应用可以极大地提高工作效率、优化流程,并为员工提供更加个性化的支持。以下是一些具体的业务场景: 日程管理和会议安排: 自动安…

现今 CSS3 最强二维布局系统 Grid 网格布局

深入学习 CSS3 目前最强大的布局系统 Grid 网格布局 Grid 网格布局的基本认识 Grid 网格布局: Grid 布局是一个基于网格的二位布局系统,是目前 CSS 最强的布局系统,它可以同时对列和行进行处理(它将网页划分成一个个网格,可以任…

Java读取PDF后做知识库问答_SpringAI实现

​​​​​​​​​​​​​​ 核心思路: 简单来说,就是把PDF文件读取并向量化,然后放到向量存储里面,再通过大模型,来实现问答。 RAG(检索增强生成)介绍: 检索增强生成&#x…

UE5 猎户座漂浮小岛 02 模型 地形

UE5 猎户座漂浮小岛 02 模型 地形 1.模型 1.1 导入 1.2 统一模型比例 1.3 添加碰撞体 2.地形 2.1 地 2.2 山体 2.3 海洋 2.4 花草