在Python中添加两个不同大小的图像或填充白色像素以使其更大
我有一个大小为1000x300的图像,我想将图像的大小设置为4992x6400。 基本上我不想调整图像大小 所以有两种不同的方法,我想我们可以做到在Python中添加两个不同大小的图像或填充白色像素以使其更大,python,python-3.x,opencv,image-processing,Python,Python 3.x,Opencv,Image Processing,我有一个大小为1000x300的图像,我想将图像的大小设置为4992x6400。 基本上我不想调整图像大小 所以有两种不同的方法,我想我们可以做到 我们可以创建所需大小的白色图像4992x6400,并将白色像素图像与较小的图像相加 在上面的代码之后,我突然想到了如何添加两个不同大小的图像 我尝试使用cv2.add和numpy.add作为不同大小的图像,还使用了cv2.addWeighted,但均未成功 我理解cv2.add和numpy.add不会工作,因为图像大小不同,但不知道cv2.addWe
cv2.add
和numpy.add
作为不同大小的图像,还使用了cv2.addWeighted
,但均未成功
我理解cv2.add和numpy.add不会工作,因为图像大小不同,但不知道cv2.addWeighted
,因为这也会因为大小不同而产生错误
在Python/OpenCV中,至少有两种可能的方法可以做到这一点。您可以使用cv2.copyMakeBorder()或使用Numpy切片将输入复制到白色背景图像的左上角。这是后者 输入:
结果:
谢谢您的回复。同样,当我尝试其他图像时,我得到以下错误
结果[yy:yy+ht,xx:xx+wd]=img值错误:无法将输入数组从形状(48126201,3)广播到形状(48124992,3)
可能的原因是什么对不起,你能发布完整的脚本和输入图像吗。看起来你正在尝试将一个较大的图像插入一个较小的图像中。是的,我在调试时得到了相同的想法。。我会努力的!并随时通知你。。再次感谢
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")
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)