我有一个带有黑线轮廓字符的图像(抱歉,出于版权目的无法链接它)。勾勒出人物轮廓的黑线是图片上最暗的东西(计划利用这一事实来帮助找到它)。我需要做的是获得四个坐标,在角色周围绘制一个虚拟框。该框应尽可能小,同时仍将轮廓字符保留在其内容中。我打算使用盒子来帮助通过使用盒子的中心点来确定角色图形的中心点。
我开始尝试识别大纲的各个部分。由于它是图像上最暗的线,我使用 getextrema() 来获取轮廓上的至少一个点,但我不知道如何获取更多点,然后将这些点组合成一个框。
非常感谢任何对此问题的见解。干杯!
- 编辑 *
这就是我现在所拥有的:
im = Image.open("pic.jpg")
im = im.convert("L")
lo, hi = im.getextrema()
im = im.point(lambda p: p == lo)
rect = im.getbbox()
x = 0.5 * (rect[0] + rect[2])
y = 0.5 * (rect[1] + rect[3])
进入人物内部似乎非常一致,但实际上离中心并不那么近。知道为什么吗?