【发布时间】:2018-05-24 03:31:16
【问题描述】:
我正在尝试进行字符检测,必须在它们周围画一个框,然后裁剪然后馈送到神经网络进行识别。一切正常,但在我在单色背景图像上使用字符集之前,很容易完成分割。
但是对于真实照片,我有不同的照明条件,很难找到轮廓。 在应用了一些自适应阈值后,我设法得到了以下结果,但从那开始,我真的不知道如何正确地进行和检测每个字符。我可以很容易地检测到一半的字符,但不是全部。可能是因为它们被许多不相关的小轮廓包围。 我有一种感觉,还剩一步,但我不知道是哪一步。 Find Countours 只能找到大约一半的字符。
现在,简而言之,我正在做:
im_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
im_gray = cv2.GaussianBlur(im_gray, (5, 5), 0)
_, th1 = cv2.threshold(im_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cim, ctrs, hier = cv2.findContours(th1.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
和
th2 = cv2.adaptiveThreshold(im_gray,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2)
下面的图像 - 原始图像和中间结果的一些变体。
所以问题是 - 分割字符之后的步骤/步骤是什么?
【问题讨论】:
-
你试过减少噪音吗? Tutorial,wiki。 Wiki 中有一些可怕的名称,因此请尝试在 opencv 中搜索特定技术以查看结果(例如 dilation, erosion 等)
-
谢谢!这个我其实没试过。是的,可怕的名字并不那么可怕:)