Преобразование контура (MatplotLib или OpenCV) в изображение того же размера, что и оригинал

У меня есть этот контур, полученный с MatplotLib:

Contour

теперь я хочу использовать его как обычный образ Python (PIL или array), потому что я хочу применить к нему маску (полученную с OpenCV).

проблема в том, что с MatplotLib изображение с контуром изменяется, и добавляется поле (для оси, даже если я не рисую ось), поэтому изображение, которое я получаю от фигуры MatplotLib, не соответствует маске, полученной с помощью В формате OpenCV.

Я попытался получить тот же контур с OpenCV, но я не получаю никакого результата с cv2.FindContours и cv2.Функции DrawContours (если вы знаете, как это сделать, пожалуйста, скажите мне... в этом предыдущей теме вы можете увидеть исходное изображение и контур, что я хочу )

другим возможным решением было бы преобразовать контур, полученный с помощью MatplotLib, в изображение (PIL или массив) с тем же размером, что и оригинал, и без маржи.

Я надеюсь, что вы могли бы помочь мне хотя бы с одним из этих решений!

--------------------------- изменить ---------------------------

Rutger Kassies ' ответ правильный. Это не работает для меня, потому что я написал эту строчку...

ax = plt.axes([0, 0, 1, 1], frame_on=False, xticks=[], yticks=[])

... после использования функции контура, и это должно быть перед использованием функции контура. Имейте это в виду!

1 ответов


Я однажды опубликовал вопрос, как вы могли бы построить изображение .imshow и сохраните его снова, чтобы он равнялся входному изображению. Ответы, которые я получил, могут быть полезны в вашем случае, вот как вы можете сохранить контурное изображение с теми же размерами:

from PIL import Image

im = np.array(Image.open('input_image.jpg').convert('L'))

xpixels = im.shape[1]
ypixels = im.shape[0]

dpi = 72
scalefactor = 1

xinch = xpixels * scalefactor / dpi
yinch = ypixels * scalefactor / dpi

fig = plt.figure(figsize=(xinch,yinch))

ax = plt.axes([0, 0, 1, 1], frame_on=False, xticks=[], yticks=[])

contour(im, levels=[240], colors='black', origin='image')

plt.savefig('same_size.png', dpi=dpi)