改进和清理验证码图像以进行字符分割

时间:2018-03-18 19:34:09

标签: python opencv computer-vision captcha

我正在处理分离数字验证码的数量以训练卷积神经网络的问题。为了实现这一目标,我尝试将不同的阈值方法与侵蚀和扩张结合使用以改善结果。到目前为止,大津的阈值给了我最好的结果。在一些图像中,我得到了相当不错的结果,但其他人甚至对人类都很困难。一些例子:

效果不错

enter image description here

enter image description here

结果不好:

enter image description here

enter image description here

我想知道是否有任何改善图像结果的方法,如第二个。我没有使用简历的任何经验,这是我的第一次接触。以下是其他一些图片示例:

enter image description here

enter image description here

enter image description here

此外,这是python代码:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

# Read image and resize
img = cv.imread('img.jpg',0)
img = cv.resize(img, (0,0), fx = 3, fy =3)

# Otsu's thresholding after Gaussian filtering
blur = cv.GaussianBlur(img,(5,5),0)
ret3,th3 = cv.threshold(blur,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)


#_, count, h= cv.findContours(th3, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
#cv.drawContours(th3, count, -1, (0,255,0),4)

#Erode, dilate and closing
kernel = np.ones((5,5), np.uint8)
th3 = cv.erode(th3, kernel, iterations=1)
th3 = cv.dilate(th3, kernel, iterations=1)
th3 = cv.morphologyEx(th3, cv.MORPH_CLOSE, kernel, iterations=1)

plt.imshow(255-th3, 'gray')
plt.show()

非常感谢

0 个答案:

没有答案