首页 > 解决方案 > 添加两个不同大小的图像或填充白色像素以使其在 Python 中更大

问题描述

我有一个大小为 1000x300 的图像,我想将图像制作为 4992x6400 的大小。基本上我不想调整图像大小

所以有两种不同的方法,我认为我们可以做到。

  1. 我们可以创建所需大小为 4992x6400 的白色图像,并将白色像素图像与较小的图像相加
import cv2
WhiteBackground = np.full(img.shape, 255, dtype=np.uint8)
cv2.imwrite(r"white.png",WhiteBackground)
readWhiteImage=cv2.imread(r"white.png")
readSmallImage=cv2.imread(r"small.png")

在上面的代码之后,我很惊讶如何添加我尝试使用的两个不同大小的图像cv2.addnumpy.add因为图像的大小不同并且也使用了cv2.addWeighted它,但都没有成功。

我知道 cv2.add 和 numpy.add 不起作用,因为图像的大小不同,但不知道cv2.addWeighted因为大小不同,这也会出错

  1. 用白色像素填充以将小图像保持在左上角并在其左侧和底部填充白色像素..我不知道如何实现这一点......

请帮助解决这个问题。 输入图像 输入_小图像

预期产出 在此处输入图像描述

标签: pythonpython-3.xopencvimage-processing

解决方案


在 Python/OpenCV 中至少有两种可能的方法可以做到这一点。您可以使用 cv2.copyMakeBorder() 或使用 Numpy 切片将输入复制到白色背景图像的左上角。这是后者。

输入:

在此处输入图像描述

import cv2
import numpy as np

# read image
img = cv2.imread('numbers.png')
ht, wd, cc= img.shape

# create new image of desired size and color (white) for padding
ww = 4992 
hh = 6400
color = (255,255,255)
result = np.full((hh,ww,cc), color, dtype=np.uint8)

# set offsets for top left corner
xx = 0
yy = 0

# copy img image into center of result image
result[yy:yy+ht, xx:xx+wd] = img

# view result
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

# save result
cv2.imwrite("numbers_inserted.jpg", result)


结果:

在此处输入图像描述


推荐阅读