首页 > 编程语言 >python的模型二维码识别

python的模型二维码识别

时间:2024-09-10 18:51:48浏览次数:13  
标签:img python cv2 二维码 points import 识别 pts 255

可以同时识别到多个二维码

直接上 代码

import cv2
import numpy as np
import pyautogui
from pyzbar.pyzbar import decode
from cv2.wechat_qrcode import WeChatQRCode

# 自定义区域的坐标和大小
region = (1024, 0, 900, 500)  # 替换为你想要的区域

# 设置要显示的窗口大小
window_width = 900
window_height = 500

# 初始化 WeChatQRCode 检测器
detector = WeChatQRCode(
    detector_prototxt_path="qr_mode/detect.prototxt",
    detector_caffe_model_path="qr_mode/detect.caffemodel",
    super_resolution_prototxt_path="qr_mode/sr.prototxt",
    super_resolution_caffe_model_path="qr_mode/sr.caffemodel"
)

while True:
    # 捕获屏幕的指定区域
    screenshot = pyautogui.screenshot(region=region)
    img = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)

    # 图像预处理
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转为灰度图像
    blurred = cv2.GaussianBlur(gray, (7, 7), 0)  # 增加模糊程度
    # 增强对比度
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    gray = clahe.apply(gray)
    # 使用自适应阈值
    binary = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                   cv2.THRESH_BINARY, 15, 2)

    # 使用 pyzbar 解码二维码
    decoded_objects = decode(binary)  # 使用处理后的图像进行解码

    # 在识别到的二维码周围画框
    for obj in decoded_objects:
        points = obj.polygon
        if len(points) == 4:  # 确保是四个顶点
            pts = np.array(points, dtype=np.int32)
            cv2.polylines(img, [pts], isClosed=True, color=(0, 255, 0), thickness=3)

            # 绘制文本
            x, y, w, h = cv2.boundingRect(pts)
            cv2.putText(img, obj.data.decode('utf-8'), (x, y - 10),  # 修正了这里
                        cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

    # 使用 WeChatQRCode 解码
    res, points = detector.detectAndDecode(img)
    if res:
        # 在识别到的二维码周围画框
        if points is not None and len(points) > 0:  # 确保 points 不为空
            for point_set in points:
                pts = np.int32(point_set).reshape(-1, 2)  # 确保 pts 是一个 N x 2 的数组
                cv2.polylines(img, [pts], isClosed=True, color=(255, 0, 0), thickness=3)

                # 确保 res 是字符串
                decoded_text = str(res)
                # 使用第一个点的整数坐标
                cv2.putText(img, decoded_text, (int(pts[0][0]), int(pts[0][1] - 10)),
                            cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 2)

    # 调整图像大小
    img_resized = cv2.resize(img, (window_width, window_height))

    # 显示结果
    cv2.imshow('QR Code Detection', img_resized)

    # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

资源链接有模型放在程序的同一个目录下

标签:img,python,cv2,二维码,points,import,识别,pts,255
From: https://blog.csdn.net/2403_86951163/article/details/142024390

相关文章

  • Python存储与读写二进制文件
    技术背景一般情况下我们会选择使用明文形式来存储数据,如json、txt、csv等等。如果是需要压缩率较高的存储格式,还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式,就是直接按照二进制格式存储。这种格式下,存储的数据之间没有间隔符,在没有压缩的情况下应该是......
  • Python 基础学习路线图【有PDF版】
    从遗忘到铭记:我的Python学习之旅曾经,学习对我来说就像一场匆匆的旅行——沿途的风景虽美,但转瞬即逝。除了那些在工作中反复磨练的技能,大多数知识仿佛过客般匆匆离去。尽管日复一日地忙碌着,每当被问及“你究竟学到了什么?”时,脑海中却一片空白。归其原因还是因为学习的内容比较杂乱......
  • 基于python+flask框架的学生成绩管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育信息化的不断推进,传统的手工记录与管理学生成绩的方式已难以满足现代教育的需求。传统的成绩管理方式不仅效率低下,易出错,且难以实......
  • 基于python+flask框架的学生信息管理系统设计与实现(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及与信息技术的飞速发展,学生信息管理成为了各大学校日常运营中不可或缺的一部分。传统的人工管理方式不仅效率低下,还容易......
  • 基于python+flask框架的在线新闻发布系统的设计与开发(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息传播的速度与广度达到了前所未有的高度。新闻作为社会信息的重要载体,其发布与传播的方式直接影响着公众对时......
  • ColchisFM 新模块发布 | ColchisFM-Python开发接口功能模块
    Python作为目前最流行的一种高级编程语言,‌以其易读性和易用性而闻名。‌特别在人工智能和数学计算上,有着天然的优势和丰富的开源算法库。ColchisFM在地质模型构建方面具有智能化、矢量化、可见即可得的特点。自动化建立地层格架,处理复杂正/逆断层、地层尖灭、地层超覆、削截、......
  • python画图|极坐标中画散点图
    python极坐标画图时,不仅可以画实线图,也可以画散点图。实线图画法如下述链接。python画图|极坐标画图基础教程-CSDN博客今天我们一起学习一下散点图画法。【1】官网教程首先依然是导航到官网,乖乖学习官网教程:Scatterplotonpolaraxis—Matplotlib3.9.2documentatio......
  • Python 中的 super(类名, self).__init__() 的含义
    Questionpytorch中定义的神经网络类的__init__()中,经常定义super(类名,self).__init__(),解释下这句话。比如:classTestNN(nn.Module):#初始化函数def__init__(self,parm1,...): super(TestNN,self).__init__() passAnswer这其实是python中的魔术......
  • python-字符串
    1.在python中,字符串是被定义为在引号(或双引号)之间的一组连续的字符。这个字符可以是键盘上所有可见字符,也可以是不可见的“回车符” “制表符”等。字符串的操作方法很多,这里只选出最典型的几种。(1)字符串大小写转换》S.lower():字母大写转换成小写。》S.upper():字母小写转......
  • 四年前端 自学Python The fifth Day
    1.1定义类类是对象的蓝图或模板,它定义了对象的属性和行为。示例代码:1.2创建对象对象是类的实例,通过类可以创建多个对象。示例代码:1.3类的成员类的成员包括实例变量、类变量、实例方法和类方法。1.4.1实例变量实例变量是与具体对象关联的变量,使用self引用。示......