慕飒潇湘 2022-10-09 02:53 采纳率: 72.7%
浏览 69
已结题

QR二维码识别不一致

问题遇到的现象和发生背景

相同的代码、相同的python版本、相同的导入包版本,运行的是不一样的结果

用代码块功能插入代码,请勿粘贴截图

from pyzbar import pyzbar
from PIL import Image
decocdeQR = pyzbar.decode(Image.open("C:\Users\Administrator\Desktop\test\test.jpg"))
print(decocdeQR)

运行结果及报错内容

我本地运行识别为空,网友能正常识别到内容url

我的解答思路和尝试过的方法

请教一个网友识别二维码,之前我尝试过这种方法但是识别不出来,但是网友的电脑可以识别出来拿到结果url,我识别为空,尝试版本归结一致去解决问题,但貌似没多大效果,
pyzbar 0.1.9
pillow 9.2.0

我想要达到的结果

正常情况下应该相同的代码运行结果一样的,奇怪的是我拿不到结果<下面是待识别的二维码>

img

  • 写回答

2条回答 默认 最新

  • chuifengde 2022-10-09 03:51
    关注
    文件路径要加上一个r ,比如上面的写成r"C:\Users\Administrator\Desktop\test\test.jpg"
    不行可以换另一种:
    
    import zxing
    reader = zxing.BarCodeReader()
    barcode = reader.decode(r"C:\Users\Administrator\Desktop\test\test.jpg")
    print(barcode.parsed)
    
    --result
    http://esf.whfgxx.org.cn/New/pub/RentView/20220514ZLXfRVE?refer=OJClCFBCL01YJJ3xrCMq283TX54J8UNJTOmcrONE&corp=6&org=100003138
    
    解决方案是:你可以写两个函数,当用第一个得到为空的时候,用第二个函数
    
    下面的识别度更好些:
    import numpy as np
    import cv2
    from pyzbar import pyzbar
    
    def get_qrcode(image_input, binary_max=230, binary_step=2):
        if len(image_input.shape) >= 3:
            image_input = cv2.cvtColor(image_input, cv2.COLOR_RGB2GRAY)
        binary, _ = cv2.threshold(image_input, 0, 255, cv2.THRESH_OTSU)
        res = []
        while (binary < binary_max) and (len(res) == 0):
            binary, mat = cv2.threshold(image, binary, 255, cv2.THRESH_BINARY)
            res = pyzbar.decode(mat)
    
        return res
    
    image_file = r"C:\Users\Administrator\Desktop\test\test.jpg"
    image = cv2.imdecode(np.fromfile(image_file, 
                                     dtype=np.uint8), 
                         cv2.IMREAD_COLOR)
    
    result = get_qrcode(image)
    print(str(result[0][0]).replace('b', ''))
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月9日
  • 赞助了问题酬金15元 10月9日
  • 创建了问题 10月9日

悬赏问题

  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
  • ¥15 不能对数据库增删改但是可以查询
  • ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部