如何使用numpy或tensorflow更快地在N个部分中相等地绘制图像?

时间:2019-03-07 03:32:37

标签: python numpy opencv tensorflow

例如,我要将(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将花费更多时间)

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

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方法。不过,我暂时不能说这里最快的是什么。