在Python中添加两个不同大小的图像或填充白色像素以使其更大

在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

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

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

  • 我们可以创建所需大小的白色图像4992x6400,并将白色像素图像与较小的图像相加
  • 在上面的代码之后,我突然想到了如何添加两个不同大小的图像 我尝试使用
    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)