小编Xit*_*ias的帖子

在Python中提取外部轮廓或图像轮廓

我想提取图像的轮廓,我正在尝试使用MatplotLib的轮廓函数.这是我的代码:

from PIL import Image
from pylab import *

# read image to array
im = array(Image.open('HOJA.jpg').convert('L'))

# create a new figure
figure()

# show contours with origin upper left corner
contour(im, origin='image')
axis('equal')

show()
Run Code Online (Sandbox Code Playgroud)

这是我原来的形象:

原版的

这是我的结果:

轮廓

但我只想展示外部轮廓,轮廓.只是这个例子中的读取行.

我该怎么做?我阅读了轮廓功能的文档,但我无法得到我想要的东西.

如果您在Python中知道更好的方法,请告诉我!(MatplotLib,OpenCV等)

python image-processing matplotlib

7
推荐指数
2
解决办法
1万
查看次数

将轮廓(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=[])
Run Code Online (Sandbox Code Playgroud)

...使用轮廓功能后,必须在使用轮廓功能之前.记在脑子里!

python opencv image-processing matplotlib contour

7
推荐指数
1
解决办法
1477
查看次数

标签 统计

image-processing ×2

matplotlib ×2

python ×2

contour ×1

opencv ×1