例如,我想将(1,1028,2052,3)的图像切成16个部分(4 * 4)。现在,我使用以下代码:

for i in range(4):
for j in range(4):
    part = input_image[0:1,i*257:i*257+257,j*513:j*513+513,0:3]
    input_image_split.append(part)
input_image = np.concatenate(input_image_split, axis=0)

要么
input_image = np.reshape(input_image, [4, 257, 2052, 3])
input_image = np.transpose(input_image, [0, 2, 1, 3])
input_image = np.reshape(input_image, [16, 513, 257, 3])
input_image = np.transpose(input_image, [0, 2, 1, 3])

但这会使我每张图像花费10毫秒左右。当我在tensorflow中使用之前的方式时,也会发生这种情况。
我可以更快地分割图像或张量吗? (tf.split将花费更多时间)

最佳答案

您可以尝试以下方法:

for i in range(4):
    for j in range(4):
        part = input_image[0][i*257:i*257+257,j*513:j*513+513,0:3]
        input_image_split.append(part)
merged = np.stack(input_image_split);

您可以尝试使用TensorFlow的tf.splittf.stack方法进行实验。不过,我暂时不能说这里最快的是什么。

关于python - 如何使用numpy或tensorflow将图像均匀地分成N个部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55035623/

10-10 22:37