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)来计算新的像素值。你可以根据需要调整输出图像的尺寸和插值方法。

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值