我想在另一个图像中插入图像,我已经能够使用,例如,img=open('logo.png')
作为插入的图像和背景图像background=open('backgroundImg.png')
,但是当我想使用askopenfilename时得到这个错误:
background.paste(img, offset)
AttributeError: 'numpy.ndarray' object has no attribute 'paste'
这是我的代码:
from PIL import Image
from tkFileDialog import askopenfilename
import cv2
filename1 = askopenfilename(filetypes=[("image","*.png")])
filename2 = askopenfilename(filetypes=[("image","*.png")])
img=cv2.imread(filename1,1)
background=cv2.imread(filename2,1)
img_w, img_h =img.shape[:2]
bg_w, bg_h = background.shape[:2]
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset)
background.save('savedImg/out6.png')
任何帮助将不胜感激 谢谢你^^
答案 0 :(得分:0)
您只需使用徽标的值覆盖图片的值即可。您的图像是WxHx3阵列,您的徽标是W1xH1x3,假设W&lt; W1和H < H1。话虽如此,你可以简单地说:
background[offset[0]:offset[0]+img_w,offset[1]:offset[1]+img_h] = img
一个简单的测试:
import cv2
import numpy
background = numpy.zeros((100,100,3))
img = numpy.ones((10,10,3))
offset = numpy.array((10,10))
background[offset[0]:offset[0]+img.shape[0],offset[1]:offset[1]+img.shape[1]] = img
cv2.imshow("test", background)
cv2.waitKey(0)
cv2.destroyAllWindows()