【问题标题】:Python opencv remove noise from captchaPython opencv从验证码中去除噪音
【发布时间】:2018-05-08 06:30:54
【问题描述】:

我需要自动解析验证码以从网站获取公共数据。

我使用 python 和 opencv。我是解决图像处理的新手。搜索后,作为解决验证码的方法,我想出了下一个。由于 Captha 中的文本使用了一组相关颜色,我尝试使用 HSV 格式和蒙版,然后将图像转换为灰度并使用阈值 (Adaptive_THRESH_MEAN_C) 去除图像中的噪声。

但这不足以消除噪音并使用 OCR (Tesseract) 提供自动文本识别。见下图。

我的解决方案有什么可以改进的或者有更好的方法吗?

原图:

处理后的图像:

代码:

import cv2
import numpy as np

img = cv2.imread("1.jpeg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(hsv, (36, 0, 0), (70, 255,255)) #green
# mask = cv2.inRange(hsv, (0, 0, 0), (10, 255, 255))
# mask = cv2.inRange(hsv, (125, 0, 0), (135, 255,255))

img = cv2.bitwise_and(img, img, mask=mask)
img[np.where((img == [0,0,0]).all(axis = 2))] = [255,255,255]

img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 2)

cv2.imwrite("out.png", img)

【问题讨论】:

  • 如果提高阈值会怎样?看起来您的文字的亮度大于周围的噪音。
  • 这里的问题是,一种适用于一张图像的设置不一定适用于另一张图像。您必须不断更改不同图像的值,这不是很实用。这就是使用验证码的全部意义所在。
  • 我认为你应该在验证码中收集更多带有符号标签的验证码图像并将其提供给深度学习以解决这个任务,我来自 KZ,我知道这个验证码挂在哪里 :)
  • 德米特里,另外我的朋友告诉我关于这个网站的移动应用程序,你想自动获取公共数据,在移动版本中验证码不会挂起 )))

标签: python opencv image-processing captcha


【解决方案1】:

我认为您可以通过应用一些平滑方法然后找到图像边缘来获得良好的性能。 代码如下:

import cv2

img = cv2.imread("input.jpg")
# smoothing the image
img = cv2.medianBlur(img, 5)

#edge detection    
edges = cv2.Canny(img, 100, 200)
cv2.imwrite('output.png', edges)

【讨论】:

  • 它确实提高了字符的可见性,但是你有没有尝试过用它来进行 OCR?
  • 我认为您可以使用 cv2.floodFill 之类的函数填充检测到的边缘的内部,然后您可以将其传递给您的 OCR 函数。
  • 或者您也可以使用检测到的边缘来掩盖您的图像。
  • 确实是个好主意。掩蔽后,将只剩下字符。
  • 小心,如果它不是一个封闭的轮廓(不是!),那么 Floodfill 只会淹没所有内容。
【解决方案2】:

您可以尝试不同的方法来实现您的目标: 您的第一张图像可以通过应用中值滤波器 (r=2) 进行处理,然后进行自适应阈值处理:

Opening 的二元选项将是另一种可以尝试的选项: .

请注意,质量低于第一种方法(尤其是最后一个 G 明显退化)。

第二张图片对治疗的反应与第一张不同:

对于中值方法:

开场:

但是,可以通过应用中值模糊 (r=1) 来提取文本,然后进行自动对比,然后使用 50 进行阈值处理:

如您所见,可以将图像质量提高到足够可识别的程度。第一个图像可以毫无问题地转换为文本,但第二个图像只能部分识别。

【讨论】:

    猜你喜欢
    • 2020-03-31
    • 2018-07-15
    • 2020-05-03
    • 2017-06-23
    • 2013-02-25
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多