验证码
思路
- 将图片保存到本地一个文件夹中
- 读取文件夹图片
- 将图像转换为HSV颜色空间
- 定义蓝色在HSV颜色空间中的取值范围,以及二值化阈值
- 将二值化结果应用于原始图像,并将蓝色像素设置为黑色,将非蓝色像素设置为白色或透明
- 保存结果图像
- 通过OCR识别刚才另存的图片
- 将识别的内容保存到记事本中
使用的插件没有的可自行百度安装
蓝色字体识别
import cv2
import numpy as np
import ddddocr
img = cv2.imread('D:/Verification/1.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_blue = np.array([100, 50, 50])
upper_blue = np.array([130, 255, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
result = np.zeros_like(img)
result[mask == 255] = [0, 0, 0]
result[mask != 255] = [255, 255, 255]
cv2.imwrite('D:/Verification/result.jpg', result)
ocr = ddddocr.DdddOcr()
with open('D:/Verification/result.jpg', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res, file=__doc__)
f = open('D:/Verification/out.txt', 'w')
f.write(str(res))
f.close()
红色字体识别
import cv2
import numpy as np
import ddddocr
img = cv2.imread('D:/Verification/1.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)
mask = cv2.bitwise_or(mask1, mask2)
result = np.zeros_like(img)
result[mask == 255] = [0, 0, 0]
result[mask != 255] = [255, 255, 255]
cv2.imwrite('D:/Verification/result.jpg', result)
ocr = ddddocr.DdddOcr()
with open('D:/Verification/result.jpg', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)
f = open('D:/Verification/out.txt', 'w')
f.write(str(res))
f.close()
在CSDN上也有一篇关于此网站验证码的识别,也可以参考该作者的写法:选择某种颜色字母的验证码破解方法