パソナのX-TECHエンジニア室 Advent Calendar 2023 8日目です。
家に転がっていたラズパイを使って、バーコードリーダーを作ってみました。
ハードウェア
- 本体 Raspberry Pi 3B+
- カメラ # GeeekPi 5MP 1080Pビデオカメラモジュール
- https://www.amazon.co.jp/gp/product/B08CN3LPRB/
- このお値段でカメラの台までついてくる優れもの
接続はこんな感じです。 フレキの向きだけ注意すれば、特に問題無いかと
設定
とりあえず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