Pythonはスキャンツールを実装しています

Pythonはスキャンコードツールを実装しています##

情報伝達のツールとして、QRコードは今日の社会で重要な役割を果たしてきました。ログインしている携帯電話ユーザーからモバイル決済まで、QRコードは生活の隅々に見られます。 QRコードがどのように解析されるか知っていますか?コードスキャンツールを自分で実装することを考えたことはありますか?よろしければ見続けてください!

1つは、ケース分析##

まず、スキャンツールを実現するためにどのような操作を作成する必要があるかを考えてみましょう。コードをスキャンする過程で、カメラを開く必要があります。携帯電話またはコンピューターからQRコードを認識する方法です。したがって、2つの重要なステップを実装する必要があります。カメラを呼び出してQRコードを識別します。

これらの2つの操作は、それぞれ2つのモジュールに対応します。opencvとpyzbarです。opencvはIntelのコンピュータービジョン処理モジュールであり、pyzbarはQRコードの解析に使用されるモジュールです。

2.環境##

環境には、python環境とモジュールが含まれます。私の環境は次のとおりです。

システム:Windows 10
python:python 3.7.9
opencv:opencv-python-4.4.0.44
pyzbar:pyzbar-0.1.8

モジュールのインストールは非常に簡単です。pipを使用して直接インストールし、最初にopencvモジュールをインストールします。

pip install opencv-python

次に、pyzbarモジュール:

pip install pyzbar

インストールバージョンが指定されていない場合、システムは自動的に最新バージョンをインストールします。モジュールをインストールした後、コードスキャンツールを実装できます。

3、QRコードを特定します##

pyzbarモジュールを使用すると、QRコードを識別する作業は非常に簡単です。まず、QRコードを準備する必要があります。 QRコードを取得したら、解析を開始できます。具体的な手順は次のとおりです。

  1. QRコードの画像を読む2.QRコードのデータを分析する3.解析されたデータからデータ情報を抽出する

実装コードは次のとおりです。

import cv2
from pyzbar import pyzbar
# 1、 QRコード画像を読む
qrcode = cv2.imread('qrcode.jpg')
# 2、 QRコードのデータを分析する
data = pyzbar.decode(qrcode)print(data)
# 3、 データ内のQRコードのデータ情報を分析する
text = data[0].data.decode('utf-8')print(text)

上記を2回解析し、初めてデータを取得しました。データがどのように表示されるかを見てみましょう。

[ Decoded(data=b'http://weixin.qq.com/r/vC_fhynEKnRVrW3k93qu', type='QRCODE', rect=Rect(left=140, top=113, width=390, height=390), polygon=[Point(x=140, y=113),Point(x=140, y=503),Point(x=530, y=503),Point(x=530, y=113)])]

これがリストであり、リストの最初のデータにURL情報が含まれていることがわかります。したがって、次のコードを再度解析する必要があります。

text = data[0].data.decode('utf-8')

これで、QRコードに含まれる情報を取得できます。その後の使用を容易にするために、上記のコードを関数として記述できます。

def scan_qrcode(img_path):
 qrcode = cv2.imread(img_path)
 data = pyzbar.decode(qrcode)return data[0].data.decode('utf-8')

次に、カメラの呼び出し方法を見ていきます。

第四に、カメラを呼び出します##

ビデオを読み取るためのVideoCaptureクラスがopencvで提供されており、カメラの呼び出しにも使用できます。カメラを呼び出す手順は次のとおりです。

  1. カメラを呼び出します2.ループ3.ループ内のフレームを読み取ります4.現在読み取られている画面を表示します5.キーボード入力を待ちます6.終了キーを押すかどうかを決定しますq7。終了キーを押して終了します。押していない場合は、サイクルを続行します

具体的なコードは次のとおりです。

import cv2
# カメラを呼び出す
cap = cv2.VideoCapture(0)while True:
 # フレームを読む
 ret, frame = cap.read()
 # 現在のフレームを表示
 cv2.imshow('scan qrcode', frame)
 # キーボード入力を待っています
 key = cv2.waitKey(10)
 # qキーを押したらカメラの電源を切ります
 if key ==ord('q'):break
# すべてのウィンドウを破棄します
cv2.destroyAllWindows()

上記のコードを自分で実行してみることができます。その効果は、フロントカメラの電源を入れるようなものです。

カメラが呼び出されたので、コードの2つの部分を組み合わせることができます。

5、スキャンツールを実現します##

コードスキャンツールの主要部分は、カメラを呼び出す操作です。読み取った各フレームを解析し、結果が解析されたら出力して終了する必要があります。具体的なコードは次のとおりです。

import cv2
from pyzbar import pyzbar

def scan_qrcode(qrcode):
 data = pyzbar.decode(qrcode)return data[0].data.decode('utf-8')

cap = cv2.VideoCapture(0)while True:
 ret, frame = cap.read()
 cv2.imshow('scan qrcode', frame)

 # QRコードを分析する
 text = None
 try:
  text =scan_qrcode(frame)
 except Exception as e:
  pass
 if text:print(text)break

 key = cv2.waitKey(10)if key ==ord('q'):break
cv2.destroyAllWindows()

上記のscan_qrcode関数を、着信画像の元のパスから直接着信画像オブジェクトに変更しました。 VideoCaptureオブジェクトを介して取得された画像フレームとcv2.imreadを介して取得された画像は同じデータタイプであるためです。

上記の重要なステップは、QRコードの動作を分析することです。解析プロセス中にQRコードがない場合は例外が発生するため、最初にテキストを定義します。そのため、try-exceptステートメントを使用してテキストを処理します。実際にデータを解析した場合にのみ、プログラムが結果を出力してプログラムを終了するかどうかによって、テキストの内容を判断する方法。

この時点で、スキャンツールを実現しました。

Recommended Posts

Pythonはスキャンツールを実装しています
Pythonはスーパーマリオを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonはtic-tac-toeゲームを実装しています
PythonはTetrisゲームを実装しています
Pythonは画像スティッチングを実装しています
Pythonはminesweeperゲームを実装しています
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonは推測ゲームを実装しています
Pythonは単純なタンクバトルを実装します
Pythonはudpチャットウィンドウを実装します
PythonはWeChat飛行機ゲームを実装しています
Pythonは単語推測ゲームを実装しています
Pythonは推測ゲームを実装しています
Pythonは駐車場管理システムを実現
Pythonはデジタル爆弾ゲームを実装しています
PythonはTCPファイル転送を実装します
Pythonnumpyはローリングケースを実装します
OpenCVPythonはパズルゲームを実装しています
Pythonは単純なtic-tac-toeゲームを実装しています
Pythonはパスワード強度検証を実装します
Pythonは車の管理システムを実装しています
Pythonマルチスレッドポートスキャンツール
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法
Pythonは平均シフトクラスタリングアルゴリズムを実装しています
Pythonは検証コード認識を実装します
Pythonは勾配降下法を実装しています
Pythonはテキストバージョンのminesweeperを実装しています
Pythonは画像スティッチング機能を実装しています
Pythonは実店舗のゲームを実装しています
Pythonは学生のパフォーマンス評価システムを実装しています
Pythonがメール機能を実装する方法
Pythonは単にスネークゲームを実装します
Python3はシングルトンデザインパターンを実装しています
Pythonは為替レート変換操作を実装します
Pythonは文字列と数値のスプライシングを実装します
Pythonは10の古典的なソートアルゴリズムを実装しています
PythonはユニバーサルWebフレームワークを実装しています
Pythonは、メールを送信するために126のメールボックスを実装しています
いくつかのPythonパフォーマンス最適化ツールを紹介します
PythonはAIフェイスチェンジ機能を実装しています
Pythonは最も急な降下方法を実装します
Pythonは実際の銀行システムを実装しています
Pythonはデジタル爆弾ゲームプログラムを実装しています
Pythonはftpファイル転送機能を実装しています
Pythonはユーザー名とパスワードの検証を実装しています
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
Pythonは写真の水平ステッチを実装しています
PythonはGIFグラフを逆さまに実装します
Pythonはメールを送信するためのQQメールボックスを実装しています
Pythonは2つのスレッドの代替実行を実装します
Pythonは分数シーケンスの合計を実装します
pythonは勾配メソッドを実装しますpython最速の降下メソッド
Pythonは、単一にリンクされたリストと辞書を実装します
python3は単に結合された設計パターンを実装します