将轮廓(MatplotLib或OpenCV)转换为与原始大小相同的图像

我用MatplotLib获得这个轮廓:

轮廓

现在,我想用它作为一个普通的Python图像(PIL或数组),因为我想将它应用于一个掩模(通过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=[])

...在使用轮廓函数之后,它必须在使用轮廓函数之前。 记住这一点!


我曾经发布过这个问题,你可以如何用.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)
链接地址: http://www.djcxy.com/p/66689.html

上一篇: Convert contour (MatplotLib or OpenCV) to image of the same size as the original

下一篇: Executing multiple join with expressions on Zend Framework 2