opencv 如何使用cv2将两个不同大小的图像粘贴到同一背景上?

xzabzqsa  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(154)

我想用cv2把两张不同大小的图片粘贴到同一个背景上。
我发现代码,下面的例子,只能合并相等大小的图像,这是一个限制.

import cv2 as cv
    
img_0 = cv.imread("0.tiff")
img_1 = cv.imread("1.tiff")
    
bg_img = cv.imread("5120x2048 black.png")
        
bg_img[0:0+img_0.shape[0], 0:0+img_0.shape[1]] = img_0
bg_img[0:0+img_1.shape[0], 512*4:512*4+img_1.shape[1]] = img_1
        
cv.imwrite("bg_img.tiff", bg_img)

从上面的代码,如果我设置:

bg_img[0:0+img_1.shape[0]+10, 512*4:512*4+img_1.shape[1]] = img_1

它将生成一条错误消息:

ValueError: could not broadcast input array from shape (512,512,3) into shape (522,512,3)

我已经准备了3张图片,我希望能够设置坐标,将2张图片放置在白色背景上,使所有3张图片形成一个单一的图像。

[Star](https://i.stack.imgur.com/RnY7D.png)
[Triangle](https://i.stack.imgur.com/yDt6C.png)
[White background](https://i.stack.imgur.com/L5etY.png)

星星图像为100x100像素^2,三角形图像为200x200像素^2,白色背景为700x700像素^2。
比如说,坐标(0,0)是星形的左上角起点,坐标(250,250)是三角形的左上角起点。
非常感谢。

qgzx9mmu

qgzx9mmu1#

import cv2 as cv
    
img_0 = cv.imread("Star.png")
img_1 = cv.imread("Triangle.png")
    
bg_img = cv.imread("White.png")
        
bg_img[0:0+img_0.shape[0], 0:0+img_0.shape[1]] = img_0
bg_img[250:250+img_1.shape[0], 250:250+img_1.shape[1]] = img_1
        
cv.imwrite("bg_img.tiff", bg_img)

Output image

相关问题