Python NumPy, как преобразовать этот список массивов / изображений в коллаж? - PullRequest
0 голосов
/ 03 июня 2018

У меня есть следующий список из 25 мини-черно-белых изображений, представляющих узоры:

imgs.shape

(25, 3, 3, 1)

Т.е. существует 25различные 3x3 черно-белые изображения.Что я хочу сделать, так это создать одно большое изображение, которое состоит из 5x5 из этих 3x3 блоков, имеет ли это смысл?Как показано ниже:

enter image description here

В таком случае я собираюсь иметь что-то вроде (15, 15, 1), которое я могу отображать и просматривать таким образом.Я использую numpy и opencv с Python.Я хотел сделать что-то достаточно эффективное для обработки в реальном времени, поэтому я подумал, что изменение формы numpy может иметь смысл.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 03 июня 2018

Решение:

imgs.reshape(5, 5, 3, 3, 1).swapaxes(1, 2).reshape(15, 15, 1)

Примеры:

# test data 
# each 3x3 image consists of the 9 identical digits

A = np.stack([
    np.full((3, 3, 1), i)
    for i in range(1, 26)
])

with_swap = A.reshape(5, 5, 3, 3, 1).swapaxes(1, 2).reshape(15, 15, 1)
print(with_swap[...,-1])

without_swap = A.reshape(15, 15, 1)
print(without_swap[...,-1])

С обменом:

[[ 1  1  1  2  2  2  3  3  3  4  4  4  5  5  5]
 [ 1  1  1  2  2  2  3  3  3  4  4  4  5  5  5]
 [ 1  1  1  2  2  2  3  3  3  4  4  4  5  5  5]
 [ 6  6  6  7  7  7  8  8  8  9  9  9 10 10 10]
 [ 6  6  6  7  7  7  8  8  8  9  9  9 10 10 10]
 [ 6  6  6  7  7  7  8  8  8  9  9  9 10 10 10]
 [11 11 11 12 12 12 13 13 13 14 14 14 15 15 15]
 [11 11 11 12 12 12 13 13 13 14 14 14 15 15 15]
 [11 11 11 12 12 12 13 13 13 14 14 14 15 15 15]
 [16 16 16 17 17 17 18 18 18 19 19 19 20 20 20]
 [16 16 16 17 17 17 18 18 18 19 19 19 20 20 20]
 [16 16 16 17 17 17 18 18 18 19 19 19 20 20 20]
 [21 21 21 22 22 22 23 23 23 24 24 24 25 25 25]
 [21 21 21 22 22 22 23 23 23 24 24 24 25 25 25]
 [21 21 21 22 22 22 23 23 23 24 24 24 25 25 25]]

Без обмена:

[[ 1  1  1  1  1  1  1  1  1  2  2  2  2  2  2]
 [ 2  2  2  3  3  3  3  3  3  3  3  3  4  4  4]
 [ 4  4  4  4  4  4  5  5  5  5  5  5  5  5  5]
 [ 6  6  6  6  6  6  6  6  6  7  7  7  7  7  7]
 [ 7  7  7  8  8  8  8  8  8  8  8  8  9  9  9]
 [ 9  9  9  9  9  9 10 10 10 10 10 10 10 10 10]
 [11 11 11 11 11 11 11 11 11 12 12 12 12 12 12]
 [12 12 12 13 13 13 13 13 13 13 13 13 14 14 14]
 [14 14 14 14 14 14 15 15 15 15 15 15 15 15 15]
 [16 16 16 16 16 16 16 16 16 17 17 17 17 17 17]
 [17 17 17 18 18 18 18 18 18 18 18 18 19 19 19]
 [19 19 19 19 19 19 20 20 20 20 20 20 20 20 20]
 [21 21 21 21 21 21 21 21 21 22 22 22 22 22 22]
 [22 22 22 23 23 23 23 23 23 23 23 23 24 24 24]
 [24 24 24 24 24 24 25 25 25 25 25 25 25 25 25]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...