объединить две картинки (разного размера) по горизонтали? - PullRequest
0 голосов
/ 01 июня 2019

У меня 2 картинки, нужно их совмещать по горизонтали.Я знаю, что numpy и cv2 (opencv) должны помочь мне сделать это.Но не знаю как.Я использовал img1 = cv2.imread (файл1), img2 = cv2.imread (файл2). Форма двух изображений: (2048, 1334, 3) и (720, 1200, 3). Как я могу это сделать?Когда я открываю эти 2 изображения, они имеют одинаковую высоту, разную ширину.Я знаю только, если 2 фото имеют одинаковый размер, тогда просто используйте concate, но мои 2 фото имеют разные размеры.Для окончательного вывода я хочу, чтобы они сохранили свою ширину, высоту выбирали наибольшую / наименьшую ... Итак, я думаю, что конечный вывод должен быть 2/3 ширины одного изображения, 1/3 ширины другого изображения, что совершенно хорошо,Мне не нужны эти 2 равномерно распределены.Просто сохраняйте свою ширину.Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Я только что решил свой вопрос.В основном используйте функцию cv2.resize() для изменения размера изображений, затем просто объединяйте их по горизонтали или вертикали.Просто измените ось.

img1 = cv2.imread('xxx.png')
img2 = cv2.imread('yyy.jpg')

, затем сравните img1.shape() и img2.shape() Используйте функцию resize (), чтобы сделать их ширину одинаковой или высоту одинаковой.

vis = np.concatenate((img1, img2), axis=1)
cv2.imwrite('out.png', vis)
0 голосов
/ 01 июня 2019

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

Чтобы обрезать часть изображения, вы можете сделать:

trimmed = image2[:image1.shape[0],:,:]

При этом сохраняются только строки от 0 до высоты image1.

Или вы можете добавить несколько черных пикселей:

black = np.zeros(image1.shape[0] - image2.shape[0], image1.shape[1])
image2 = np.hstack(image2, black)

А потом вы соединяете вертикально.

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