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

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.lryc.cn/news/332396.html

相关文章:

  • Java代码基础算法练习-负数个数统计-2024.04.04
  • 【算法刷题day17】Leetcode:110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
  • C++ | Leetcode C++题解之第10题正则表达式匹配
  • 职场迷航?MBTI测试为你指明方向,找到最匹配的职业!
  • hive 慢sql 查询
  • Vue - 2( 10000 字 Vue 入门级教程)
  • Cisco交换机安全配置
  • LLM大模型可视化-以nano-gpt为例
  • 【layui-table】转静态表格时固定表格列处理行高和单元格颜色
  • 如何同时安全高效管理多个谷歌账号?
  • 使用docker-tc对host容器进行限流
  • 应急响应工具
  • PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能
  • 什么是 内网穿透
  • RobotFramework测试框架(11)--变量文件
  • java八股——常见设计模式
  • 机器学习 - metric评估方法
  • 书生·浦语大模型趣味Demo作业( 第二节课)第二期
  • VScode使用持续更新中。。。
  • YUM仓库和编译安装
  • IPv4子网判断
  • CSS 实现航班起飞、飞行和降落动画
  • 设计模式——建造者模式03
  • 【机器学习】《机器学习算法竞赛实战》思考练习(更新中……)
  • 机场数据治理系列介绍(5)民用机场智慧能源系统评价体系设计
  • [LeetCode][LCR190]加密运算——全加器的实现
  • Linux: linux常见操作指令
  • 【BPNN】BP神经网络代码
  • 基于mqtt的物联网控制移动应用程序开发
  • MPLS-基础、LSR、LSP、标签、体系结构