OpenCV – Python、PLCnext での赤色光検出
Open CV は、最も使用されているコンピューター ビジョン ライブラリの 1 つです。 Open CV は、顔認識、オブジェクト トラッキング、バーコードのスキャンに使用できます。また、このブログにとってさらに重要な、ライトのオン/オフの検出にも使用できます。このブログでは、PLCnext で Open CV と Python を使い始める手助けをし、赤色光検出のために画像を前処理する方法に関する小さなコード サンプルを紹介します。このブログは、以前のブログ投稿で説明した PLCnext コントローラーで Open-CV を使用する別の方法です。
前提条件
現在、私は AXC F 2152 コントローラーを使用していますが、AXC F 1152 で同じ手順を実行することも、AXC F 3152 および RFC 4072s で非常に類似した手順を実行することもできます。今日の唯一の前提条件は、使用しているコントローラーに Balena-Engine がインストールされていることです。 Balena-Engine を正常にインストールするための手順は、PLCnext Github ページにあります。 8GBのSDカードを使用することをお勧めします。 SSH 接続と WinSCP を使用してコントローラーにアクセスします。これらのツールの使用は、このブログ投稿の範囲外です。このフォーラムまたは簡単な Google 検索で、それらの使用方法に関する優れたガイドを見つけることができます。
OpenCV-Python イメージをダウンロード
コントローラーへの SSH セッションを開始し、balena-engine のインストール後に root ユーザーとして再度ログインします。
次のコマンドを実行してコーヒーを飲みます。イメージがコントローラーにダウンロードされるまでにしばらく時間がかかります。
balena-engine pull pxcbe/opencv-python
インストールを検証する
このステップでは、イメージを検証し、イメージにインストールされている Open-CV バージョンを取得します。次のコマンドを実行します。
すべてがうまくいけば、コンテナーは Open-CV バージョンを出力し、コンテナーはそれ自体を削除します。
執筆時点でのインストールバージョンは 4.1.0 です。
balena-engine run -it --rm \
pxcbe/opencv-python \
python -c "import cv2; print(cv2.__version__)"
作業ディレクトリを設定
WinSCP を開き、ディレクトリ /opt/plcnext にフォルダー opencv を作成します。したがって、パスは /opt/plcnext/opencv である必要があります。
このリポジトリのコンテンツをダウンロードし、作成したディレクトリ内にコピーして貼り付けます。
独自の画像で .jpg を変更し、必要に応じて app.py を変更できます。
スクリプトをテストする
次に、GitHub ページからダウンロードしたスクリプトをテストし、コンテナをインタラクティブに実行します。 root として次のコマンドを実行します:
balena-engine run -it --rm -v /opt/plcnext/opencv/:/opencv_app pxcbe/opencv-python /bin/bash
コンテナ内でシェル セッションに入っているので、opencv_app ディレクトリを次のように呼び出します
cd opencv_app
スクリプトを次のように開始します:
python app.py
シェルにいくつかの出力が表示され、フォルダ /opt/plcnext/opencv に 3 つの新しいイメージが表示されます。それらを表示するには、最初に winSCP フォルダーを更新する必要がある場合があります!
では、私たちは何をしたのでしょうか?
ライトがオンかオフかを調べ始める前に、この場合は「open_cv.jpg」の最初の画像に前処理を行う必要があります。最初に行うのは、計算能力を維持するために画像を再スケーリングすることです。これは行 12 で行われます (app.py の) cv2.resize を含むファイル 指図。出力は元の画像と同じように見えますが、最初の画像の 50% しかありません。
次のステップは、画像をグレースケールすることです。行 17 で見つかった関数を使用して画像をグレースケールします。結果は下の画像で確認できます。
先取りパイプラインの最後のステップは、画像のしきい値を設定することです。特定の値を下回るすべてのピクセルは黒になり、同じ値を超えるすべてのピクセルは白になります。画像のしきい値を設定する方法はいくつかありますが、より良い結果が得られる方法もあります。しかし、今日の 21 行目 cv2.threshold 十分であろう。結果は次の図で確認できます。これで、黒と白のピクセルのみの小さな画像サイズになりました。固定カメラからライトが点灯しているかどうかを検出する簡単な方法は、関心領域 (ROI) を定義し、白いピクセルをスキャンすることです。ただし、より複雑なアルゴリズムを使用すると、より良い結果が得られます。このトピックを扱っている他のいくつかのブログを、さらに読むためにリンクしました。
参考文献
https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.htmlhttps://docs.opencv.org/master/dd/d43/tutorial_py_video_display.htmlhttps://medium.com/@kenan.r.alkiek/https-medium-com-kenan-r-alkiek-traffic-light-recognition-505d6ab913b1
このビデオを視聴するには、マーケティング Cookie を受け入れてください。
このビデオを視聴するには、マーケティング Cookie を受け入れてください。
コンテナについてまだ少しわからないことがありますか?
これらのブログは興味深いかもしれません:
免責事項
これは、PLCnext コントローラーで open-cv を使用する 1 つの方法です。このブログでは、PLCnext ターゲット用に open-cv c++ をクロスコンパイルする方法について説明します。
面倒に思えるかもしれませんが、本番システムにとっては確かに価値があります。プロジェクトに最適な方法を決定する前に、十分な注意を払ってください。
画像は定期的に更新されません。このプロジェクトの拡張または維持に関心がある場合は、[email protected] までご連絡ください
コンテナを無期限に実行する方法は、アプリケーションによって大きく異なるため、意図的に省略しました。
自分で適切な方法を見つけるか、プロジェクトの関係者と話し合ってください。
クレジット
コンテナーの作業は、mohaseeb の作業に大きく依存しています
産業技術
- Python 演算子
- リアルタイムの顔認識:エンドツーエンドのプロジェクト
- 自動ビジョンオブジェクト追跡
- 電子フォトニックチップを組み合わせることで、超高速の量子光検出が可能になります
- LED アクセサリ – LED ライト ストリップ アクセサリ
- 24 ユニット 7:Mastercam
- Python から PLCnext AXC F 2152 PLC で変数を使用するためのシンプルな REST ベースのライブラリ
- PLCnext Tableau ダッシュボード
- PLCnext Power BI レポート
- PLCnext Grafana ダッシュボード
- PLCnext ControlのJavaアプリケーション