将轮廓保存为图像

时间:2018-05-23 15:02:29

标签: python matplotlib contour scikit-image

我正在尝试转换文件夹以显示每个图像的轮廓。代码将在我绘制时显示图像,但不会将其保存到图像中。如何将其保存为图像?

当前错误消息:

ValueError: 'arr' does not have a suitable array shape for any mode.


import matplotlib.pyplot as plt
import os
from PIL import Image

i=0
directory_in_str='C:\\directory'
directory_output='C:\\output_directory'
for file in os.listdir(directory_in_str):
        print(file)

        # read image to array
        im = array(Image.open(join(directory_in_str,file)).convert('L'))

        # show contours with origin upper left corner
        im = plt.contour(im, levels=[100], colors='black', origin='image')

        scipy.misc.imsave(directory_output +'image' + str(i) + '.jpg', im)
        i+=1

print('done')

谢谢!

2 个答案:

答案 0 :(得分:1)

imsave function旨在与numpy数组一起使用。

举个例子:

import matplotlib.pyplot as plt
import numpy as np

arr = np.random.rand(10,10)
plt.imsave("test.png", arr)

在这里你要保存matplotlib图。 如@ lelouchkato的回答所述,这将使用plt.savefig函数完成。

请注意,您需要保存到现有目录,因此您可能希望路径中有一个额外的退格\\

plt.savefig(directory_output +'\\image' + str(i) + '.jpg')

答案 1 :(得分:0)