我正在尝试识别手写数字。假设我有以下图片:
我的目标是平滑轮廓的极值特征,并仅保留白色轮廓的形状,如下图所示:
我首先应用了cv2.THRESH_BINARY_INV以去除噪声。
现在我尝试使用np.ones((5,5))作为核心进行cv2.erode(),但是结果图像仍然具有极值点。
我认为应用cv2.findContours()可能有助于获得所需的形状,但最终将得到两个轮廓,一个内部轮廓和另一个外部轮廓。非常感谢任何想法!
编辑: 感谢@stateMachine,我成功地获得了数字的骨架。我应用了cv2.ximgproc.thinning(),接着是cv2.GaussianBlur()和cv2.MORPH_CLOSE。如果可以稍微平滑此图像的极值点,则完美无缺。我仍然开放接受任何想法 :)
我的目标是平滑轮廓的极值特征,并仅保留白色轮廓的形状,如下图所示:
我首先应用了cv2.THRESH_BINARY_INV以去除噪声。
现在我尝试使用np.ones((5,5))作为核心进行cv2.erode(),但是结果图像仍然具有极值点。
我认为应用cv2.findContours()可能有助于获得所需的形状,但最终将得到两个轮廓,一个内部轮廓和另一个外部轮廓。非常感谢任何想法!
编辑: 感谢@stateMachine,我成功地获得了数字的骨架。我应用了cv2.ximgproc.thinning(),接着是cv2.GaussianBlur()和cv2.MORPH_CLOSE。如果可以稍微平滑此图像的极值点,则完美无缺。我仍然开放接受任何想法 :)