基于Python与OpenCV的上海随申码实时查验系统
本文介绍使用Python、OpenCV及pyzbar库构建的简易健康码查验系统。系统通过笔记本摄像头实时扫描上海随申码,利用HSV色彩空间判断绿码状态,并结合二维码解析获取显示时间。当扫码时间与系统时间偏差超过两分钟时判定为过期,提供本地化部署方案及测试程序下载。
系统背景与设计目标
近期在公司入口处,因保安查验健康码效率较低导致排队现象频发,由此激发了开发一个简易健康码识别系统的想法。该程序主要针对上海地区的随申码进行优化,能够准确显示健康码的生成时间。对于其他省份的健康码,系统仅能判别是否为绿码状态,暂不支持时间显示功能。
技术栈与运行效果
项目核心基于Python语言开发,主要依赖OpenCV图像处理库和pyzbar二维码解析库。程序运行后的实际检测效果如下图所示。

实时检测机制
测试环境为笔记本电脑,程序直接调用内置摄像头进行实时检测。当摄像头捕捉到健康码二维码时,系统会即时显示识别结果。
绿码判定与过期逻辑
系统能够区分绿码与非绿码状态。针对上海随申码,程序会提取并显示二维码内包含的时间信息(即健康码生成时间,而非当前电脑系统时间)。若提取的健康码时间与电脑系统时间相差超过两分钟,系统将判定该二维码已过期。
颜色识别核心代码
以下是判断健康码颜色状态的核心代码逻辑部分。
# 颜色范围定义
color_dist = {
'red': {'Lower': np.array([0, 60, 60]), 'Upper': np.array([6, 255, 255])},
'green': {'Lower': np.array([35, 43, 35]), 'Upper': np.array([90, 255, 255])},
}
# 检测颜色
def detect_color(image, color):
gs = cv2.GaussianBlur(image, (5, 5), 0) # 高斯模糊
hsv = cv2.cvtColor(gs, cv2.COLOR_BGR2HSV) # HSV
inRange_hsv = cv2.inRange(hsv, color_dist[color]['Lower'], color_dist[color]['Upper']) #返回mask
image_s = image.shape[0]*image.shape[1] #图片面积
ratio = sum(sum(inRange_hsv//255))/image_s
if ratio > 0.1 :
return True
else:
return False程序打包与使用指南
为了方便使用,已将完整工程打包为可执行的exe文件。
可通过以下百度云链接获取资源:
链接: https://pan.baidu.com/s/149xXXKARooXo48F2AOSnsQ?pwd=15xu 提取码: 15xu
下载并解压文件后,进入test文件夹,双击运行其中的test.exe即可开始使用。
以上就是关于利用Python实现健康码查验系统的详细介绍。如需了解更多Python相关技术内容,欢迎查阅本站过往文章或继续浏览后续教程,感谢大家的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









