不知道如何正确地将白色边框添加到我的numpy imagearray中数字键盘

2024-04-19 10:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用openCV2加载一个灰度图像,然后将其转换为数字阵列. 现在我想用一个“框架”来填充这个数组。然而,我有点麻烦,解剖什么新的手册要我确切地做。我试着在google上搜索填充示例,但没有找到与我的案例相关的示例。在

我当前的代码如下:

import numpy as np
img = cv2.imread('Lena.png', )
imgArray = np.array((img))
imgArray = np.pad(imgArray, pad_width=1,mode='constant' ,constant_values=0)
cv2.imshow('Padded', imgArray)

Tags: 图像框架示例imgnpgoogle数字手册
3条回答

还有另一个选择np.pad公司名称:

正如您看到的here,您需要提供您想要的轴np.pad. 简单地使用:

    imgArray = np.pad(imgArray, pad_width=1, mode='constant', constant_values=0)

只向第三个轴(即RGB通道)添加值,以便您无法再打印图像。在

如引用问题中所述,您需要使用以下参数来编写代码:

^{pr2}$

另请参见np.paddocumentation

Number of values padded to the edges of each axis. ((before_1, after_1), … (before_N, after_N)) unique pad widths for each axis. ((before, after),) yields same before and after pad for each axis. (pad,) or int is a shortcut for before = after = pad width for all axes.

这意味着元组的第一个条目用一个“0”填充第一个轴(图像的上下边界)和第二个元组填充第二个轴(左边界和右边界)。在

您不想填充最后一个维度,因为这是存储RGB信息的维度。在

正如你在问题中所说的,你想要一个白色的边框:常量值应该设置为255或1,这取决于你的图像范围。使用0会产生黑色边框。在

{openCV2}查看文档

我的最佳猜测是使用constant= cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

您可以执行以下操作:

import numpy as np
import cv2 

img = cv2.imread('Lena.png', 0)
img = np.pad(img, pad_width=4, mode='constant', constant_values=0)
cv2.imshow('Padded', img)
cv2.waitKey(0)

cv2.imreaddocumentation

cv2.imread(filename[, flags]) → retval

参数:

  • filename–要加载的文件的名称。

  • 标志:

标志指定加载图像的颜色类型:

CV_LOAD_IMAGE_ANYDEPTH-如果设置,当输入具有相应深度时返回16位/32位图像,否则将其转换为8位。在

CV_LOAD_IMAGE_COLOR-如果已设置,请始终将图像转换为颜色

CV_LOAD_IMAGE_GRAYSCALE-如果设置,则始终将图像转换为灰度图像

>;0返回3通道彩色图像。 注意在当前的实现中,alpha通道(如果有)将从输出图像中剥离。如果需要alpha通道,请使用负值。在

=0返回灰度图像。在

<;0按原样返回加载的图像(使用alpha通道)。在

使用上述代码,我们得到以下结果:

enter image description here

相关问题 更多 >