たくさんのQRコードを読み込む方法
作成したQRコードがたくさんある時に読み込めるか確認したい時に便利です
コード
# -*- coding: utf-8 -*-
import os
import cv2
from pyzbar.pyzbar import decode
import time
import io, sys
import numpy as np
from PIL import Image
def read_qr_codes_in_folder(folder_path):
qr_codes_data = []
qr_codes_d = []
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
image_path = os.path.join(folder_path, filename)
# Pillowで画像ファイルを開く
pil_img = Image.open(image_path)
# PillowからNumPyへ変換
image = np.array(pil_img)
# カラー画像のときは、RGBからBGRへ変換する
if image.ndim == 3:
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
# image = cv2.imread(image_path)
decoded_objects = decode(image)
for obj in decoded_objects:
if obj.type == 'QRCODE':
qr_data = obj.data.decode('utf-8')
# qr_data = qr_data.encode("shift-jis").decode("utf-8", errors="ignore")
qr_codes_data.append(qr_data)
qr_codes_d.append(filename)
print(f"ファイル: {filename}, QRコードのデータ: {qr_data}")
time.sleep(0.5)
else:
print(f"ファイル: {filename}, QR")
time.sleep(0.5)
if not qr_codes_data:
print("QRコードが見つかりませんでした。")
filename2 = "b_data.txt"
with open(filename2, 'w') as file:
for item in qr_codes_d:
item = item.encode('sjis', errors='ignore').decode('sjis')
file.write(str(item) + '\n')
return qr_codes_data
if __name__ == "__main__":
#: folder_path = "D:\in" # QRコード画像が含まれるフォルダーのパスを指定
folder_path = "D:\in" # QRコード画像が含まれるフォルダーのパスを指定
qr_codes_data = read_qr_codes_in_folder(folder_path)
print("読み込んだQRコードのデータ:", qr_codes_data)
ディスカッション
コメント一覧
まだ、コメントがありません