如何将图像分成块并使用opencv将它们合并回来。我已将图像划分为块,但我没有通过实现重复数据删除来获得如何将其合并。这是我的代码……
解决这个问题的一种方法是使用 numpy.block 它将块堆叠在一起:
numpy.block
import numpy as np # 20x20 image img = np.random.randint(0,9,(20,20)) # List of 4 5x20 image slices sliced = np.split(img,4,axis=0) # List of 4 lists of 4 5x5 image blocks blocks = [np.split(img_slice,4,axis=1) for img_slice in sliced] # stacking them back together img_stacked = np.block(blocks) # testing if the stacking works right print((img==img_stacked).all())
但是,只有在列表顺序正确的情况下(第一个拆分轴0,然后是轴1),这才有效。更普遍 hstack , vstack , 要么 concatenate 可以将较小的阵列(图像)放在一起
hstack
vstack
concatenate