我正在尝试识别手写数字。假设我有以下图像:
我的目标是平滑轮廓的极值特征,并仅保留白色痕迹的形状,如下所示:
我首先申请cv2.THRESH_BINARY_INV
消除噪音。
现在我尝试应用cv2.erode()
withnp.ones((5,5))
作为内核,但结果图仍然有极值点。
我认为应用cv2.findContours()
可能有助于获得所需的形状,但我最终会得到两个轮廓,一个用于内部,另一个用于外部。任何想法将不胜感激!
编辑:感谢@stateMachine,我设法得到了数字的骨架。我申请了cv2.ximgproc.thinning()
,然后是cv2.GaussianBlur()
和cv2.MORPH_CLOSE
。如果这个图像的极值点可以平滑一点那就完美了。我仍然对任何想法持开放态度:)