numpy сцепление с осью -1 визуализировать с помощью matplotlib - PullRequest
0 голосов
/ 16 октября 2019

С учетом 2 изображений axis = 0 и axis = 1 в np.concatenate объединяют изображения в строках и столбцах соответственно.

, но axis = -1 изменяет канал объединенного изображения на 6 , что приводит к следующей ошибке при визуализации с использованием matplotlib:

raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data

Код Iиспользуйте:

import matplotlib.pyplot as plt
import numpy as np
img_A = cv2.imread('1.jpg')
img_B = cv2.imread('2.jpg')

conc_img = np.concatenate((img_A, img_B), axis=-1)

print "shape:\t imgA={},imgB={},conc_img={}".format(img_A.shape, img_B.shape, conc_img.shape)
plt.imshow(conc_img)
plt.show()

функция печати возвращает:

shape: imgA=(375, 500, 3),imgB=(375, 500, 3),conc_img=(375, 500, 6) # <<-- channel is changed to 6  

Как я могу визуализировать это объединенное изображение?

1 Ответ

0 голосов
/ 17 октября 2019

Вы более или менее ответили на свой вопрос. Если вы объединяете на axis=-1 (последняя ось), то вы объединяетесь на канале RGB. Как вы говорите, в результате получается 6 каналов, и изображения могут иметь только 1, 3 или 4 канала.

Попробуйте:

conc_img = np.concatenate((img_A, img_B), axis=1)

Вы получите массив формы (375, 1000, 3). Или измените axis на 0, чтобы объединить по первой оси и получить (750, 500, 3).

Или вы имеете в виду нечто иное, чем «объединить»? Если вы хотите, чтобы результат имел форму (375, 500, 3), тогда вы ищете другую функцию.

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