我编写了一个程序,但是没有用,稍后再详细介绍。
错误
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轴上却大。
它是否正确?
注释
最佳答案
您在此处创建的图像:
# 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
沿垂直轴(行)连接,因此它变成了这样的形状:|_|
|_|
|_|
...
而第二个创建的图像沿水平维度(列)是concatenadet,看起来像这样:|_|_|_|...
在引发错误的行中,您试图将它们连接为一个图像,这是不可能的(您可以想象)。您需要让我们知道您要实现的目标(最终图像希望具有什么形状)。另一点注意:您将
grass
和dirt
一次连接在一起,但是随后又添加了2倍的air
和4倍的dirt
,我不确定这是否是理想的结果。
关于python - 由于一维尺寸更好,程序会吐出轴错误,是因为我最终混合了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63229447/