Добавить изображение в другое изображение - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу вставить изображение в другое изображение, я смог сделать это, используя, например, 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')

любая помощь будет оценена Спасибо тебе ^^

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете просто перезаписать значения вашего изображения значениями вашего логотипа. Ваше изображение представляет собой массив WxHx3, а логотип - W1xH1x3, при условии, что W

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...