Python || 皖事通安康码截图信息简易识别采集
Python,皖事通,安康,截图,信息,简易,识别,采集
2025-03-20 08:49:00 时间
概述
为了收集大家的健康码信息,工作人员要依据大家的截图将数据一一录入,繁琐复杂。基于此问题,想到写段程序解决这个繁杂无聊的工作。
调库
1.图像处理模块 opencv
2.文字识别模块 百度API
3.数据处理模块 numpy
4.信息汇总模块 xlwt
模块化
图片信息识别提取
调用百度API通用文字识别高精度版,具体使用方法见Python || 实现实时截图文字内容识别OCR
文字信息处理
提取到的信息会被存储在contentList中,依据健康码是否为“安康码”进一步提取用户信息,这里只提取时间和姓名。
if "皖事通·安康码" in contentList:
isextra = 1
codeType = "安康码"
codeName,codeTime = collecPersonData(contentList)
def collecPersonData(result):
prevIndex = result.index('办事')
nextIndex = result.index('点击认证网证助手')
if nextIndex - prevIndex == 2:
codeName = result[prevIndex + 1]
else:
codeName = "未找到姓名"
for i in range(20, 23):
timeString = result[i]
if "2022" in timeString:
currentTime = timeString[0:10]
currentDay =timeString[10:]
codeTime = currentDay + " "+currentTime
return codeName,codeTime
健康码颜色提取
颜色分为“红色”、“黄色”和“绿色”,依据HSV颜色空间的三种颜色的分布进行提取。
def getCodeColor(frame):
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
maxsum = -100
color = None
color_dict = getColorList()
for d in color_dict:
mask = cv2.inRange(hsv, color_dict[d][0], color_dict[d][1])
binary = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY)[1]
binary = cv2.dilate(binary, None, iterations=2)
cnts, hiera = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
sum = 0
for c in cnts:
sum += cv2.contourArea(c)
if sum > maxsum:
maxsum = sum
color = d
return color
其中,三种颜色的颜色值范围如下。
def getColorList():
dict = collections.defaultdict(list)
# 红色
lower_red = np.array([0, 60, 60])
upper_red = np.array([6, 255, 255])
color_list = []
color_list.append(lower_red)
color_list.append(upper_red)
dict['red'] = color_list
# 黄色
lower_yellow = np.array([26, 43, 46])
upper_yellow = np.array([34, 255, 255])
color_list = []
color_list.append(lower_yellow)
color_list.append(upper_yellow)
dict['yellow'] = color_list
# 绿色
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
color_list = []
color_list.append(lower_green)
color_list.append(upper_green)
dict['green'] = color_list
return dict
信息收集
将“安康码”信息存储在excel中,方便后期处理,具体方法见Python助力2020公务员考试 获取全国公务员职位信息
为区分“健康码”类型,对非“安康码”不做处理,对“安康码”做改名处理,名称改为“安康码”的人名。
os.rename('rootPath/' + imageName, 'rootPath' + codeName.replace(':', '--').replace('*', '') + '.jpg') # 非法字符处理
相关文章
- python 函数、运算符以及运算符优先级
- python数据分析源码_python 统计分析
- Easy Games With Python and Pygame(二)- Pygame 绘制图形
- python的优缺点
- jupyter和python的关系_jupyter notebook和python
- Python计算中位数_用频率直方图求中位数
- 【python】分苹果
- OpenCV进行人脸识别(Python)
- Python-基础03-流程控制
- Python项目49-用户验证短信接口(可劲撸)
- pythoncharm注释快捷键_多行注释以什么开头
- python win32api messagebox_如何在Python中使用Win32 API?
- python skitlearn_Python sklearn
- 2022年最新Python大数据之Python基础【七】参数与管理系统
- python解释器找不到_python解释器路径
- Python基础10-函数的递归
- Python调用Prometheus监控数据并计算
- 用 Python 破解 WiFi 密码,太刺激了!
- Python 命令行参数的3种传入方式
- Python项目46-xadmin管理后台数据(强撸)