基于Python与OpenCV的上海随申码实时查验系统

何川
何川
发布时间:2026-10-15 | 5人浏览过
原创

本文介绍使用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相关技术内容,欢迎查阅本站过往文章或继续浏览后续教程,感谢大家的支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表