PythonでMacのカメラからQRコードを読んでみた

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

QRコードをOpenCV+pyzbarで読んでみた。今更な感じもするけど、OpenCVおじさんとしてはやっておかないと。

人気記事:
OpenCV + YOLOv3で物体検出を行う

 

環境構築

簡単に

pip install --upgrade pip
pip install opencv-python pyzbar numpy

ソースコード

from pyzbar.pyzbar import decode
from pyzbar.pyzbar import ZBarSymbol
import cv2
import numpy as np


def edit_contrast(image, gamma):
    """コントラクト調整"""
    look_up_table = [np.uint8(255.0 / (1 + np.exp(-gamma * (i - 128.) / 255.)))
        for i in range(256)]

    result_image = np.array([look_up_table[value]
                             for value in image.flat], dtype=np.uint8)
    result_image = result_image.reshape(image.shape)
    return result_image


if __name__ == "__main__":
    capture = cv2.VideoCapture(0)
    if capture.isOpened() is False:
        raise("IO Error")

    while True:
        ret, frame = capture.read()
        if ret == False:
            continue
        
        # グレースケール化してコントラクトを調整する
        gray_scale = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        image = edit_contrast(gray_scale, 5)

        # 加工した画像からフレームQRコードを取得してデコードする
        codes = decode(image)

        if len(codes) > 0:
            for code in codes:
                print(code)

実行結果

マックでこんなことしてんな、と。