Skip to content

7セグメントディスプレイの数値を認識するプログラム

License

Notifications You must be signed in to change notification settings

SatoshiRobatoFujimoto/7segment-display-reader

 
 

Repository files navigation

7segment-display-reader

7セグメントディスプレイの数値を認識するプログラムです。
ローカルPC or Raspberry Pi上での実行を想定しています。
 

本リポジトリは以下の内容を含みます。

  • サンプルプログラム
  • 7セグメント画像識別モデル(TF-Lite)
  • 学習データ、および、学習用ノートブック

Requirements

  • OpenCV 3.4.2 or Later
  • Tensorflow 2.4.1 or Later
  • matplotlib 3.3.2 or Later

Usage

実行方法は以下です。
起動後、マウスで4点(左上、右上、右下、左下の順)検出対象をクリックする

python 7seg-reader.py

実行時には、以下のオプションが指定可能です。 * --device
カメラデバイス番号の指定
デフォルト:0 * --width
カメラキャプチャ時の横幅
デフォルト:640 * --height
カメラキャプチャ時の縦幅
デフォルト:480 * --crop_width
7セグメント画像1枚の切り抜き横幅
デフォルト:96 * --crop_height
7セグメント画像1枚の切り抜き縦幅
デフォルト:96 * --num_digits
7セグメントディスプレイの桁数
デフォルト:4 * --check_count
7セグメント画像識別時に直近何回の数値をもとに判断するか
指定数値を保持し、最多の数値を識別値とする
デフォルト:5 * --use_binarize
7セグメント画像の識別時に2値化(大津の2値化)を使用するか否か
デフォルト:指定なし * --use_binarize_inverse
2値化を行う際に値を反転するか否か
デフォルト:指定なし * --binarize_th
2値化の閾値(0~255)を指定
このオプションを指定した場合、大津の2値化ではなく単純2値化を実施
デフォルト:None

Training

1.学習データ

以下のデータを混合し、学習データ:検証データ = 3:1 で分割して使用

  • 01.dataset
    2種類の7セグメント表示器を撮影したデータセット
    「0」~「9」「表示なし」のデータで約42,000枚
  • Kazuhito00/7seg-image-generator
    OpenCVの描画関数で疑似的に作成したデータセット
    「0」~「9」「-」「表示なし」のデータで48,000枚

2.モデル訓練

01-01.train_model.ipynb」をJupyter Notebookで開いて上から順に実行してください。
Google Colaboratory上での実行を想定していますが、ローカルPCでも動作出来ると思います。

X.モデル構造

01-01.train_model.ipynb」で用意しているモデルのイメージは以下です。

Author

高橋かずひと(https://twitter.com/KzhtTkhs)

License

7segment-display-reader is under Apache v2 license.

About

7セグメントディスプレイの数値を認識するプログラム

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 97.0%
  • Python 3.0%