更强大的二维码识别工具zBar

OpenCV 专栏收录该内容
78 篇文章 6 订阅

《OpenCV系列教程》
项目位置:OpenCV-Sample
代码位置:102-ScannerQRCodeWithZbar.py
OpenCV自带的二维码识别工具,能力较差,尤其是在如下的情况下经常识别不出来。

现在我们使用zBar这个开源二维码工具,它自身是C语言编写。支持多个操作系统,在Android和iPhone上支持的也很好。 我们只介绍python版本,这个版本是OpenCV与zBar的结合使用。 安装zBar 首先安装zBar的二进制版本。
sudo apt-get install libzbar-dev

然后安装zBar的Python包

pip install pyzbar

实际代码如下:

from __future__ import print_function
import pyzbar.pyzbar as pyzbar
import numpy as np
import cv2


def decode(im):
    # 在这里查找二维码
    decodedObjects = pyzbar.decode(im)

    # 打印出结果
    for obj in decodedObjects:
        print('Type : ', obj.type)
        print('Data : ', obj.data, '\n')

    return decodedObjects


def display(im, decodedObjects):

    for decodedObject in decodedObjects:
        points = decodedObject.polygon

        if len(points) > 4:
            hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))
            hull = list(map(tuple, np.squeeze(hull)))
        else:
            hull = points;


        n = len(hull)

        for j in range(0, n):
            cv2.line(im, hull[j], hull[(j + 1) % n], (255, 0, 0), 3)

    cv2.imshow("Results", im);
    cv2.waitKey(0);

# Read image
im = cv2.imread('./res/QR3.jpeg')
decodedObjects = decode(im)
display(im, decodedObjects)
  • 1
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值