Программа выплевывает ошибки оси из-за того, что одно измерение лучше, это из-за моего финального микса? - PullRequest
1 голос
/ 03 августа 2020

Я создал программу, но она не работает, подробнее позже.

Ошибка

  File "computer path", line 40, in <module>
    mix=np.concatenate((mix_ver, mix_hoz), axis=0)
  File "<__array_function__ internals>", line 5, in concatenate
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 128 and the array at index 1 has size 1024

Мой код


# Import libs
import cv2
import numpy as np

# Final block size
blockSize = (128, 128)

# Air
air_small = cv2.imread('air.png', 1)
air = cv2.resize(air_small, blockSize)

# Dirt
dirt_small = cv2.imread('dirt.png', 1)
dirt = cv2.resize(dirt_small, blockSize)

# Grass
grass_small = cv2.imread('grass.png', 1)
grass = cv2.resize(grass_small, blockSize)

# Make mix ver
mix_ver=np.concatenate((grass, dirt),axis=0)
for m in range(2):
    mix_ver=np.concatenate((air, mix_ver),axis=0)

for m in range(4):
    mix_ver=np.concatenate((mix_ver, dirt), axis=0)

# Make mix hoz
    
mix_hoz=np.concatenate((grass, dirt),axis=1)
for m in range(2):
    mix_hoz=np.concatenate((air, mix_hoz),axis=1)

for m in range(4):
    mix_hoz=np.concatenate((mix_hoz, dirt), axis=1)

# Final Mix
mix=np.concatenate((mix_ver, mix_hoz), axis=0)

# Show output    
cv2.imshow('final', mix)

Что я думаю

Насколько я знаю, это часть в конце, которая вызывает проблему, делая ее вдвое больше по оси x , но не на Y. Это правильно?

Примечания

  1. Почему я меняю размер? Я изменяю размер, потому что мои изображения 64x64.
  2. Почему я объединяю? Я хочу сложить их вместе, чтобы создать 2D-область.

1 Ответ

1 голос
/ 03 августа 2020

Изображение, которое вы здесь создаете:

# Make mix ver
mix_ver=np.concatenate((grass, dirt),axis=0)
for m in range(2):
    mix_ver=np.concatenate((air, mix_ver),axis=0)

for m in range(4):
    mix_ver=np.concatenate((mix_ver, dirt), axis=0

, объединено по вертикальной оси (строк), поэтому оно становится такой формой:

|_|
|_|
|_|
...

, в то время как создается второй изображение объединяется по горизонтали (столбцы) и выглядит следующим образом:

|_|_|_|...

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

С другой стороны: вы объединяете grass и dirt один раз вместе, но затем вы добавляете 2 раза air и 4 раза dirt снова, я не уверен, что это желаемый исход.

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