OpenCV Python: как наложить изображение в центр другого изображения - PullRequest
0 голосов
/ 05 октября 2019

Как я могу вставить уменьшенное изображение в центр другого изображения? Оба изображения имеют одинаковую высоту, но меньшее имеет ширину, которая всегда меньше.

Полученное изображение должно быть меньшим, с черными полосами вокруг него, чтобы оно было квадратным.

resizedImg = cv2.resize(img, (newW, 40))
blankImg = np.zeros((40, 40, 1), np.uint8)

resizedImg

blankImg

1 Ответ

1 голос
/ 06 октября 2019

Вот один из способов. Вы вычисляете смещения по x и y для верхнего левого угла измененного изображения, где оно будет, когда измененное изображение центрируется на фоновом изображении. Затем используйте индексирование с нуля, чтобы поместить измененное изображение в центр фона.

import cv2
import numpy as np


# load resized image as grayscale
img = cv2.imread('resized.png', cv2.IMREAD_GRAYSCALE)
h, w = img.shape
print(h,w)

# load background image as grayscale
back = cv2.imread('background.png', cv2.IMREAD_GRAYSCALE)
hh, ww = back.shape
print(hh,ww)

# compute xoff and yoff for placement of upper left corner of resized image   
yoff = round((hh-h)/2)
xoff = round((ww-w)/2)
print(yoff,xoff)

# use numpy indexing to place the resized image in the center of background image
result = back.copy()
result[yoff:yoff+h, xoff:xoff+w] = img

# view result
cv2.imshow('CENTERED', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

# save resulting centered image
cv2.imwrite('resized_centered.png', result)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...