013 OpenCV copyMakeBorder(padding)

目录

一、环境

二、原理

三、完整代码


一、环境

本文使用环境为:

  • Windows10
  • Python 3.9.17
  • opencv-python 4.8.0.74

二、原理

cv.copyMakeBorder是OpenCV库中的一个函数,用于在图像周围添加边框(padding)。这个函数可以用于图像的预处理、增强等任务。它的基本语法如下:

dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, value)
  • src:输入图像,可以是彩色或灰度图像。
  • topbottomleftright:分别表示上、下、左、右方向上的边框宽度。如果设置为负数,则表示自动计算边框宽度。
  • borderType:边框类型,可以是上述提到的任意一种类型。
  • value:边框的颜色值。对于彩色图像,需要提供一个包含三个元素的元组(例如:(0, 0, 0)表示黑色);对于灰度图像,需要提供一个单一的数值(例如:0表示黑色)。

其中,cv.copyMakeBorder支持以下几种边框类型:

  1. cv.BORDER_CONSTANT:常数填充,即用一个固定的值填充边框。
  2. cv.BORDER_REFLECT:反射填充,即用图像边界的像素值进行填充。
  3. cv.BORDER_REFLECT_101:反射填充,与cv.BORDER_REFLECT类似,但使用不同的边界像素值。
  4. cv.BORDER_WRAP:循环填充,即用图像边界的像素值进行填充,形成一个环状的效果。
  5. cv.BORDER_REPLICATE:复制填充,即用图像边界的像素值进行填充。
  6. cv.BORDER_DEFAULT:默认填充,即用0填充边框。

三、完整代码

注:执行下面代码,图像显示后:

  • 按下r是原图,
  • 按下c是边界padding后的效果图,
  • 按下esc退出
import sys
from random import randint
import cv2 as cv
def main(argv):borderType = cv.BORDER_CONSTANTwindow_name = "copyMakeBorder Demo"src = cv.imread(cv.samples.findFile('data/lena.jpg'), cv.IMREAD_COLOR)## [create_window]cv.namedWindow(window_name, cv.WINDOW_AUTOSIZE)top = int(0.05 * src.shape[0])  # shape[0] = rowsbottom = topleft = int(0.05 * src.shape[1])  # shape[1] = colsright = leftwhile 1:# 待填充的随机颜色value = [randint(0, 255), randint(0, 255), randint(0, 255)]dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)cv.imshow(window_name, dst)c = cv.waitKey(500)if c == 27:breakelif c == 99: # 99 = ord('c')borderType = cv.BORDER_CONSTANTelif c == 114: # 114 = ord('r')borderType = cv.BORDER_REPLICATEreturn 0
if __name__ == "__main__":main(sys.argv[1:])

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

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

相关文章

C#中GDI+绘图应用(柱形图、折线图和饼形图)

目录 一、柱形图 1.示例源码 2.生成效果 二、折线图 1.示例源码 2.生成效果 三、饼形图 1.示例源码 2.生成效果 GDI绘制的一些常用的图形,其中包括柱形图、折线图和饼形图。 一、柱形图 柱形图也称为条形图,是程序开发中比较常用的一种图表技术…

掌握Python异步IO利器:深入解读Asyncio

更多资料获取 📚 个人网站:ipengtao.com 异步 IO 与 Asyncio 在 Python 中的应用 在当今互联网时代,处理大量并发请求或I/O密集型任务对于软件应用程序至关重要。Python的异步IO框架——Asyncio成为了处理此类问题的有力工具。本文将深入介…

在vue中导出csv文件

在Vue中使用 xlsx 库将表格数据导出为CSV文件,你需要按照以下步骤操作: 安装 xlsx 库 如果你的项目中还没有安装xlsx库,可以使用npm或yarn来安装它。 npm install xlsx # 或者 yarn add xlsx在Vue组件中导入xlsx库: 在需要处理…

基于SpringBoot实现的电影院售票系统

一、 系统架构 前端:html | jquery | bootstrap 后端:springboot | thymeleaf | spring-data-jpa 环境:jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 首页 02. 登录页 03. 管理端-电影列表 04. 管理端-添加电影 05. 管…

京东数据分析:2023年10月京东打印机行业品牌销售排行榜

鲸参谋监测的京东平台10月份打印机市场销售数据已出炉! 10月份,打印机市场整体销售下滑。鲸参谋数据显示,今年10月份,京东平台打印机的销量将近60万,环比降低约2%,同比降低约5%;销售额为4.4亿&a…

【已解决】AttributeError: module ‘numpy‘ has no attribute ‘int‘.

问题描述 Traceback (most recent call last): File "main_test_ircnn_denoiser.py", line 183, in <module> main() File "main_test_ircnn_denoiser.py", line 66, in main current_idx min(24, np.int(np.ceil(noise_level_img/2)-…

模拟电路学习笔记(一)之芯片篇(持续更新)

模拟电路学习笔记&#xff08;一&#xff09;之芯片篇&#xff08;持续更新&#xff09; 1.CD4047BE芯片 CD4047是一种包含高电压的多谐振荡器&#xff0c;该器件的操作可以在两种模式下完成&#xff0c;分别是单稳态和非稳态。CD4047需要一个外部电阻器和电容器来决定单稳态…

开源项目CuteSqlite开发笔记(二):SQLite的架构

在开发CuteSqlite图形客户端的时候&#xff0c;需要用到SQL的语法解释&#xff0c;来对SQL语句进行优化。找了很多的SQL语法解释器&#xff0c;都不是十分满意&#xff0c;只有翻开Sqlite的源码&#xff0c;看看SQLite对SQL语句的解释过程&#xff0c;本文是翻译的官方文档。 官…

Twincat功能块使用经验总结

控制全局变量&#xff1a; //轴控制指令 bi_Power: BOOL; //使能 bi_Reset: BOOL; //复位 bi_Stop: BOOL; //停止 bi_JogForward: BOOL; //正向点动 bi_JogBackwards: BOOL; //反向点动 bi_MoveAdditive: BOOL; //增量位…

Anaconda创建虚拟环境以及Pycharm和Jupyter如何切换虚拟环境

文章目录 Anaconda创建管理虚拟环境0. 进入到终端1. 创建新环境2. 切换环境3. 删除环境4. 查询当前已有的环境 Pycharm切换虚拟环境0. 更换解析器1. 添加虚拟环境&#xff08;之前默认的是base环境&#xff09;2. 验证切换虚拟环境 Jupyter Notebook 切换虚拟环境1. 安装ipyker…

基于SSM框架的《超市订单管理系统》Web项目开发(第五天)供应商管理,增删改查

基于SSM框架的《超市订单管理系统》Web项目开发&#xff08;第五天&#xff09;供应商管理&#xff0c;增删改查 上一次我们实现了多表关联查询&#xff0c;还有分页显示数据的功能。还完善了用户管理这一模块。 因此今天我们需要完成的是供应商管理模块&#xff0c;这一模块…

BFD多跳检测配置

定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种全网统一的检测机制&#xff0c;用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网络设备需要…

抖店的基础框架怎么搭建?新手必看!

我是电商珠珠 我做抖店也已经将近3年了&#xff0c;很多新手会经常问我抖店到底要怎么做这些问题&#xff0c;我呢总结出了一个做抖店的基础框架&#xff0c;想要了解的朋友们仔细往下看。 1、入驻 入驻的时候需要去办理营业执照&#xff0c;营业执照的话可以是个体工也可以…

2-二分-索引二分-在排序数组中查找元素的第一个和最后一个位置

这是索引二分的第二篇算法&#xff0c;力扣链接 这道题其实在另一个专栏写过&#xff0c;借此机会复习一下吧。 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 targe…

指针进阶知识超详细讲解(C语言)(中)

前言 苦苦等待&#xff0c;终于迎来了我们的指针讲解第二期&#xff0c;如果有还没有看过上一期的小伙伴&#xff0c;那赶紧点击这个链接学习后再来看这篇博客吧。指针基础知识超详细讲解&#xff08;C 语言&#xff09;&#xff08;上&#xff09; 如果对学习C语言有兴趣那千万…

超热门好用的免费API接口汇总

通用文字识别OCR&#xff1a;多场景、多语种、高精度的整图文字检测和识别服务&#xff0c;多项指标行业领先&#xff0c;可识别中、英、日、韩、法、德多种语言。二维码识别OCR&#xff1a;对图片中的二维码、条形码进行检测和识别&#xff0c;返回存储的文字内容。身份证识别…

如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问

目录 前言 1. Ubuntu安装SVN服务 2. 修改配置文件 2.1 修改svnserve.conf文件 2.2 修改passwd文件 2.3 修改authz文件 3. 启动svn服务 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射本地端口 5. 测试公网访问 6. 配置固定公网TCP端口地址 6.1 保留一个固定…

GEE:Sobel算子卷积

作者&#xff1a;CSDN _养乐多_ 本文将深入探讨边缘检测中的一个经典算法&#xff0c;即Sobel算子卷积。我们将介绍该算法的基本原理&#xff0c;并演示如何在Google Earth Engine中应用Sobel算子进行图像卷积操作。并以试验区NDVI为例子&#xff0c;研究区真彩色影像、NDVI图…

【GIT】.gitignore 在忽略目录中放开某目录

示例&#xff1a;忽略build下面的所有目录&#xff0c;只放开build/ast2500-default/workspace/recipes-phosphor/ 目录 .gitignore 实现文件代码 # 忽略 build 目录下的所有目录 # 并放开build/ast2500-default/workspace/recipes-phosphor/ build/* !build/ast2500-defaul…

记录 | c++打印变量类型

c打印变量类型: 使用 typeid(变量名).name() int main(){std::cout << "type of ss : " << typeid(ss).name() << std::endl; }