失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码

python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码

时间:2021-08-31 20:28:51

相关推荐

python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码

前言:验证码是个烦人的小家伙!当然有很多打码平台,可以轻松解决!但可以自己来,干嘛靠别人!有技术不学是傻儿童!今天主要讲opencv来解决验证码!抱着怀里教你!让你向前迈一大步!详细讲,慢慢看!简单易懂!

一 .流程:

大致分为以下步骤:

图片灰度化处理 >>>二值化 >>>降噪>>>分割>>>识别(一般短验证码无需分隔)

注意:以下这种需要先去除背景色

二 .今日主人公:

这人眼看起都有点变扭,干扰元素太多了!

三 灰度化:

1).简单原理:

本身三原色为RGB,但opencv里是使用的BGR,在BGR值相同时为灰色。大概就是,将三通道的图片变为单通道就可以称为灰度化处理。

2).导包:

包名:opencv-python与numpy

import cv2import numpy as np

3).三种灰度化方法:

# 方法一 直接在读取图片的时候灰度化yzm = cv2.imread('1.png',cv2.IMREAD_GRAYSCALE)# 方法二 在读入图片后再进行灰度化yzm = cv2.imread('1.png')yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)# 方法三 使用numpy取值进行灰度化# max:取最大值 较亮min:取最小值 较黑mean:取平均值yzm = cv2.imread('1.png')yzm = np.min(yzm,axis=2).astype(np.uint8)

4).显示与写入:

# 保存灰度化的图片cv2.imwrite('new_img.png',yzm)# 显示灰度化的图片 windows1是窗口名称cv2.imshow('windows1',yzm)# waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发,0表示任意按键cv2.waitKey(0)# 销毁特定的窗口cv2.destroyWindow('windows1')

5).效果图:

四. 二值化:

简单说:将图片变成黑白(0和255)叫做二值化处理,调用openCv里的threshold方法。

注意:阈值可以调整

import cv2yzm = cv2.imread('1.png') # 读图片yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY) # cv2 方法灰度化# 二值化thresh,yzm = cv2.threshold(yzm,160,255,cv2.THRESH_BINARY)# yzm:表示需要操作的数组# 160:表示阈值# 255 表示最大值cv2.imshow('window1',yzm)cv2.waitKey(0)cv2.destroyWindow('window1')

效果图:

这效果就很明显了!

五. 降噪

降噪方法有三:1.八邻域降噪

2.使用侵蚀与膨胀形态学去噪

3.cv2中的morphologyEx方法

八邻域不讲,本篇主要是简单易懂!用新人上手

1).cv2中的morphologyEx方法

import cv2import numpy as npyzm = cv2.imread('1.png')yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY) # cv2 方法灰度化thresh,yzm = cv2.threshold(yzm,170,255,cv2.THRESH_BINARY) # cv2二值化# 降噪yzm = cv2.morphologyEx(yzm,cv2.MORPH_CLOSE,np.ones(shape=(6,6)))cv2.imwrite('2.png',yzm) # 写入cv2.imshow('window1',yzm)cv2.waitKey(0)cv2.destroyWindow('window1')

效果图:

2).使用侵蚀与膨胀形态学去噪

import cv2import numpy as npyzm = cv2.imread('1.png')yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY) # cv2 方法灰度化thresh,yzm = cv2.threshold(yzm,170,255,cv2.THRESH_BINARY) # cv2二值化# 先膨胀 让黑色遭点消失,再侵蚀让黑色加粗dilate = cv2.dilate(yzm,np.ones(shape=(6,6)))yzm = cv2.erode(dilate,np.ones(shape=(5,5)))cv2.imwrite('2.png',yzm) # 写入cv2.imshow('window1',yzm)cv2.waitKey(0)cv2.destroyWindow('window1')

效果图:

六. 识别

可以使用:1.muggle_ocr识别

2.调用百度识别 (两者都是免费识别)

1)muggle_ocr识别:

# muggle_ocr识别import muggle_ocrsdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)img = open('2.png','rb').read()text = sdk.predict(image_bytes=img)print(text)

2) 百度识别:

from aip import AipOcrAPP_ID = ''API_KEY = ''SECRET_KEY = ''client = AipOcr(APP_ID, API_KEY, SECRET_KEY)img = open('2.png','rb').read()result = client.basicGeneral(img)print(result)

效果图:

结束语:有错误,请悄悄指出了!码字不易,望点赞收藏!骚年!奋勇向前吧!我在路的悬崖边等您!

待到秋来九月八,我花开后百花杀。

python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码处理 降噪 简单易懂验证码处理

如果觉得《python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。