opencv-python库 cv2边界填充resize图片

文章目录

  • 边界填充
  • 改变图片大小

边界填充

在OpenCV中,边界填充(Border Padding)是指在图像周围添加额外的像素,以扩展图像的尺寸或满足某些算法(如卷积)的要求。OpenCV提供了cv2.copyMakeBorder()函数来进行边界填充。

cv2.copyMakeBorder()函数的语法如下:

cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value=None)

参数说明:

  • src:源图像。
  • top, bottom, left, right:分别表示在图像的顶部、底部、左侧和右侧添加的像素数。
  • borderType:边界类型,决定了如何填充边界像素。OpenCV提供了以下几种边界类型:
    • cv2.BORDER_CONSTANT:使用常数值填充边界。
    • cv2.BORDER_REFLECT:边界像素是源图像边界像素的镜像反射。
    • cv2.BORDER_REFLECT_101或cv2.BORDER_DEFAULT:与cv2.BORDER_REFLECT类似,但稍有不同。
    • cv2.BORDER_REPLICATE:使用源图像边界像素的值填充边界。
    • cv2.BORDER_WRAP:将源图像边界像素的值进行环绕填充。
      value:当borderType为cv2.BORDER_CONSTANT时,需要指定填充的常数值。

下面是一个使用cv2.copyMakeBorder()进行边界填充的示例:

import cv2# 读取图像
image = cv2.imread('path_to_your_image.jpg')# 定义边界宽度和类型
top, bottom, left, right = 50, 50, 50, 50
border_type = cv2.BORDER_CONSTANT
value = [0, 0, 0]  # 黑色填充,BGR格式# 进行边界填充
padded_image = cv2.copyMakeBorder(image, top, bottom, left, right, border_type, value)# 显示填充后的图像
cv2.imshow('Padded Image', padded_image)# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们在图像的四个方向上都添加了50个像素的黑色边界。你可以根据需要调整边界宽度、边界类型和填充值。边界填充在图像处理中常用于准备图像数据以进行卷积、池化等操作,或者在图像拼接、图像扩展等场景中也非常有用。

改变图片大小

在OpenCV(cv2)中,cv2.resize() 函数用于调整图像的尺寸。这个函数可以增大或减小图像的宽度和高度,并且可以选择不同的插值方法来决定如何计算新的像素值。

下面是 cv2.resize() 函数的基本语法:

cv2.resize(src, dsize, fx=None, fy=None, interpolation=cv2.INTER_LINEAR)

参数说明:

  • src:输入图像。
  • dsize:输出图像所需的尺寸,表示为 (width, height) 的元组。如果设置为 None,则可以使用 fx 和 * fy 参数来指定缩放因子。
  • fx:水平轴的缩放因子。如果为 None,则根据 dsize.width 和原始图像的宽度计算。
  • fy:垂直轴的缩放因子。如果为 None,则根据 dsize.height 和原始图像的高度计算。
  • interpolation:插值方法,决定如何计算新的像素值。常用的插值方法包括:
    • cv2.INTER_NEAREST:最近邻插值。
    • cv2.INTER_LINEAR:双线性插值(默认)。
    • cv2.INTER_CUBIC:双三次插值。
    • cv2.INTER_AREA:像素区域关系插值(用于缩小图像)。
    • cv2.INTER_LANCZOS4:Lanczos插值。

下面是一个使用 cv2.resize() 调整图像尺寸的例子:

import cv2# 读取图像
image = cv2.imread('path_to_your_image.jpg')# 定义新的尺寸
new_size = (800, 600)# 使用 cv2.resize() 调整图像尺寸
resized_image = cv2.resize(image, new_size, interpolation=cv2.INTER_LINEAR)# 显示原始图像和调整尺寸后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Resized Image', resized_image)# 等待按键并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例子中,cv2.resize() 函数将原始图像的尺寸调整为 800x600 像素,并使用双线性插值(cv2.INTER_LINEAR)来计算新的像素值。你可以根据需要调整输出图像的尺寸和插值方法。

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

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

相关文章

网络协议栈--数据链路层

目录 对比理解“数据链路层”和“网络层”一、认识以太网1.1 以太网帧格式1.2 认识MAC地址1.3 对比理解MAC地址和IP地址1.4 认识MTU1.5 MTU对IP协议的影响1.6 MTU对UDP协议的影响1.7 MTU对于TCP协议的影响1.8 查看硬件地址和MTU 二、ARP协议2.1 ARP协议的作用2.2 ARP协议的工作…

Springboot传参要求

传参的参数名称必须与Set方法的参数名字相同 ,不然会报错。

TS小记--

Ts学习 npm init -y -y所有问题都选yes 创建package.json文件 安装ts: npm i typescript -g -g全局安装,保证每个地方都可以使用 创建ts配置文件:tsconfig.json tsc -init 执行ts文件: tsc ./src/index.ts 导入webpac包&am…

MacBook安装使用XMind

MacBook安装使用XMind XMind简介 官方地址: https://www.xmind.cn/ XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。 XMind 是一款非常实用的商业思维导图软件,应用…

我认识的Git-史上最强的版本控制系统

大家好! 欢迎大家来一起交流Git使用心得,相信很多同事对Git都很熟悉了,如果下面说的有错误的“知识点”,欢迎批评指正。 初识Git 我认识Git已经很多年了(我在有道云笔记里面“Git”文件夹的创建时间是: …

树莓派部署yolov5实现目标检测(ubuntu22.04.3)

最近两天搞了一下树莓派部署yolov5,有点难搞(这个东西有点老,版本冲突有些包废弃了等等) 最后换到ubuntu系统弄了,下面是我的整体步骤: 1.烧完ubuntu镜像后,接显示器按系统流程进行系统部署(大于…

qt通过setProperty设置样式表笔记

在一个pushbutton里面嵌套两个label即可,左侧放置图片label,右侧放置文字label,就如上图所示; 但是这时的hover,press的伪状态是没有办法“传递”给里面的控件的,对btn的伪状态样式表的设置,是不…

STM32 can通信部分函数注释

-----CAN1_Mode_Init CAN模式初始化函数:u8 CAN1_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode) //CAN初始化 //tsjw:重新同步跳跃时间单元.范围:CAN_SJW_1tq~ CAN_SJW_4tq //tbs2:时间段2的时间单元. 范围:CAN_BS2_1tq~CAN_BS2_8tq; //tbs1:时间段1的时间单元. 范…

Codeforces Round 931 (Div. 2) ---- E. Weird LCM Operations ---- 题解

E. Weird LCM Operations: 题目大意: 思路解析: 这是一道构造题,那么观察这个构造有啥性质,观察到最多操作次数为 n/6 5,然后每次操作需要选择三个数,如果每次操作的三个数都不和之前的重复的…

3月造车新势力销量出炉:问界继续领跑,哪吒下滑,岚图抢眼

进入4月份,各大造车新势力们纷纷公布了3月份最新销量成绩,根据相关数据显示,问界再度超越理想,夺得造车新势力头名的位置。而零跑、蔚来、小鹏的销量也实现不错的增长,岚图汽车的表现同样十分亮眼。不过日前遭到周鸿祎…

Shell与Bash与POSIX与Linux间的关系

shell是什么? Shell的英语翻译是“壳”,其作用也跟名字差不多,为操作系统套个壳,人与操作系统的壳交互。与壳相对应的则是操作系统内核,一个“壳”一个“核”。核从1970年代开始就基本定型了,没什么大的改…

Windows 11安装kb5035853补丁时,提示错误0x800f0922,并且弹出“某些操作未按计划进行,不必担心,正在撤消更改。请不要关机”

Windows 11安装kb5035853补丁时,提示错误0x800f0922,并且还在重启后弹出“某些操作未按计划进行,不必担心,正在撤消更改。请不要关机”,按微软官方的作法是:https://learn.microsoft.com/zh-cn/windows/rel…

精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)

精准扶贫管理系统目录 目录 基于Springboot的精准扶贫管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1)用户信息管理 (2)贫困户信息管理 (3)新闻类型管理 &a…

机器学习模型调优简介

机器学习模型调优是提升模型性能的关键步骤,涉及调整模型的参数、选择适当的算法以及优化数据处理方式等。以下是一些常见的机器学习模型调优方法: 超参数调整: 网格搜索:通过搜索超参数空间中的每一个可能的组合来找到最优的超参…

A+B Problem 解析

题目描述 输入两个整数 $a, b$,输出它们的和($|a|,|b| \le {10}^9$)。 注意 1. Pascal 使用 integer 会爆掉哦! 2. 有负数哦! 3. C/C 的 main 函数必须是 int 类型,而且 C 最后要 return 0。这不仅对洛谷…

全量知识系统 程序详细设计-“原型”(百度搜索QA)

Q1.今天来聊聊全量知识系统(以下简称“全知系统”)程序详细设计的设计“原点” (或可称为“设计原型”) 全量知识系统(全知系统)的程序详细设计是一个复杂且系统的工程,其设计的“原点”或“设…

YooAssets 使用相关

## 使用 YooAssets 动态加载原生文件时候 > 原生文件:txt;json;等需要直接保存文件内string字符的文件 需要将打包方式设置成为,PackRawFile 并且加载时候使用 API : YooAssets.LoadRawFileSync()YooAssets.LoadRa…

MySQL数据库——1.创建数据库

在 MySQL 数据库中,要创建一个新的数据库,可以使用 SQL 命令 CREATE DATABASE。创建数据库是管理数据的第一步,它提供了一个容器,用于存储表、视图、存储过程等数据库对象。 示例: CREATE DATABASE my_database; 在…

腾讯云轻量4核8G12M应用服务器性能测评和优惠价格表

腾讯云4核8G服务器价格:轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线?支持30个并发数,可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

简述对css工程化的理解

一、css工程化解决了哪些问题 1、宏观设计:css如何组织、拆分、设计模块结构 2、编码优化:如何更好地编写css 3、构建:如何处理css,使打包结果最优 4、可维护性:最小化后续的变更成本 二、针对问题,如何解…