ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Raspberry Piでバーコードリーダーを作る

パソナのX-TECHエンジニア室 Advent Calendar 2023 8日目です。

qiita.com

家に転がっていたラズパイを使って、バーコードリーダーを作ってみました。

ハードウェア

接続はこんな感じです。 フレキの向きだけ注意すれば、特に問題無いかと

設定

とりあえずOpenCVのインストール必要。 バーコードの読み取りに使うpyzbarもpipでインストールしてください。

カメラを有効にするのに sudo raspi-configでカメラIFを有効にしてください。

ソースコード

無限ループしながら、バーコードを見つけるとそれをファイル名にして保存します。 ESCキーを押すと終了です。 こちらも特に問題無いかと。

import time, os
import cv2
from pyzbar.pyzbar import decode, ZBarSymbol

camera = cv2.VideoCapture(0)
code = ''

while True:
    ret, frame = camera.read()
    if not ret:
        break

    decode_list = decode(frame)

    if decode_list:
       code_new = decode_list[0].data.decode('utf-8')
       if code != code_new:
           print('found ', code_new)
           code = code_new
           out_file = os.path.join('img', code + '.png')
           cv2.imwrite(out_file, frame)

    cv2.imshow('barcode', frame)
   
    key = cv2.waitKey(1)
    if key == 27:
        break

print('finish')    
camera.release()
cv2.destroyAllWindows()

読めたバーコード

なんか自分の手が入っていて気持ち悪かったので、画像の一部だけ。 こんな感じでカメラにバーコードが入ると、自動で見つけて値を読み取ります。

4910015780148

9784040751160

9784434311017