Python+CV2二维码识别实战:针对大图小码的预处理与检测

需求:产品中有二维码,但是二维码很小,需要进行整盘识别二维码并记录,难度大,精度低。

一个可行的方案:先识别产品区域,再进一步无损裁剪二维码可能性的区域,裁剪的二维码识别精度低,还需要进一步放大后识别,之前使用了ZXing、Pyzbar 、cv2等最基础的识别库,识别能力一般般。

最后翻了好多资料,最终识别二维码采用的是微信开源的算法模型,能识别模糊的、倾斜角度的,识别能力是很靠谱。

相关代码片段:

import cv2
 
# 加载 wechat_qrcode 检测器,这段是重点,换了好多个扫码识别的库,最终只有这个微信开源的扫码引擎最靠谱,参考文档:https://zhuanlan.zhihu.com/p/348412200
detector = cv2.wechat_qrcode_WeChatQRCode(
    "./qr_mode/detect.prototxt",
    "./qr_mode/detect.caffemodel",
    "./qr_mode/sr.prototxt",
    "./qr_mode/sr.caffemodel"
)
# 二维码识别模块
def qr_processing(crop_img):
    try:
        # 放大倍数识别,分别1-6倍
        for num in range(1, 6):
            resized_img = cv2.resize(crop_img, None, fx=num, fy=num, interpolation=cv2.INTER_CUBIC)
            res, _ = detector.detectAndDecode(resized_img)
            if res and res[0]:
                print(f'二维码识别成功: {res[0]}')
        return False
    except Exception as e:
        print(f'二维码识别错误: {str(e)}')
        return False

识别产品看我另一篇文章:

使用yolo模型进行目标检测,包含训练步骤和测试代码-优快云博客

完整的识别例子:

识别速度还可以再快点,最新代码能实现3秒内识别出4X5=20个码。

测试硬件:

1、2000万像素CCD工业相机+支架(摄像头越高清,解析度越好)

2、6毫米焦段镜头,和相机配套的,目的就是为了近距离拍摄出更高清的帧率照片

3、I7 9700系列处理器,主要是加快识别速度,感觉还行,差距不大,识别瞬间会调用所有核心,几乎一秒钟后就搞定了。

相机和镜头成本整套算起来3500左右吧。

批量识别大图小码视频案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值