边界填充

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

GitHub 加速计划 / opencv31 / opencv
77.37 K
55.71 K
下载
OpenCV: 开源计算机视觉库
最近提交(Master分支:2 个月前 )
c3747a68 Added Universal Windows Package build to CI. 1 天前
9b635da5 - 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐