Сохранить контур как изображение - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь преобразовать папку, чтобы показать контуры каждого изображения.Код покажет изображение, когда я его построю, но не сохраню его в изображение.Как я могу сохранить его в изображение?

Текущее сообщение об ошибке:

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 голосов
/ 23 мая 2018

Функция imsave предназначена для использования с массивами 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.

Имейте в виду, что вам нужно сохранить в существующий каталог, так что вы, вероятно, захотите дополнительный backspace \\ на вашем пути

plt.savefig(directory_output +'\\image' + str(i) + '.jpg')
0 голосов
/ 23 мая 2018

попробуйте следующую функцию plt.savefig.

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.savefig.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...