use*_*339 3 python opencv image-processing computer-vision morphological-analysis
如果轮廓勾勒出字母S的边缘(例如,在漫画中),我怎么能沿着这个字母的书脊获得一系列点,以便稍后使用直线,三次样条或其他曲线表示技术来表示这个形状? 我想在Python/OpenCV中使用30-40个点来处理和表示形状.
形态骨架化可能有助于此,但操作似乎总是产生错误的分支.有没有更好的方法将轮廓折叠成字母的'S'形状?

在下面的例子中,您可以看到错误的"蛇的舌头",就像形态骨架化产生的分支一样.我不知道如果这是算法应该做的事情是否错误是公平的,但对我来说,我不希望他们在那里.

以下是漫画sans字母:

骨架化的另一个问题是它的计算成本很高,但是如果你知道一种方法可以使它像分支一样形成"蛇舌",那么我会尝试一下.
实际上,矢量化字体并非易事,而且相当棘手.要使用贝塞尔曲线正确地矢量化字体,您需要跟踪.您可以使用许多库来跟踪图像,例如Potrace.我不是很了解使用python,但根据我的经验,我使用下面描述的c ++完成了类似的项目:
A.使用立方贝塞尔曲线拟合轮廓
虽然应该做很多工作,但这种方法很简单.我相信如果你想要适应从细化中获得的骨骼,这也很有效.

最小二乘拟合的插图:

B.分辨率分辨率独立曲线渲染
如在此描述的该方法中纸张是非常复杂,但提供给显示矢量字体最佳算法之一:
