OpenCV 画像処理実験
全体概要
OpenCV の画像処理実験の各プログラムはそれぞれ単独で実行できます。基礎から応用へ、易しいものから難しいものへと段階的に設計されており、OpenCV をすぐに使いこなして実践できます。
基礎実験: カメラを開いて撮影した映像を取得した後、画像を直接処理して、点、線、円、矩形、三角形、五角形、正六角形を描画します。また、画像の回転やクロップも行えます。
応用実験: OpenCV で HSV と Lab の手法を用いて色域値を取得し、色検出を実現します。
1. 基礎実験《01_usbcam_basic_experiment》
| プログラム名 | 内容 | 実践例 |
|---|---|---|
| 01_open_camera.py | OpenCV で USB カメラを開き、カメラ映像をリアルタイムで読み込みます | 2.1 カメラ映像のリアルタイム読み込み(デバイスインデックスを使用) |
| 02_open_camera_udev.py | OpenCV で udev ルールを使って USB カメラを開き、カメラ映像をリアルタイムで読み込みます | 2.2 カメラ映像のリアルタイム読み込み(udev ルール) |
| 03_opencv_draw_solid_circle.py | OpenCV で USB カメラを開き、リアルタイム表示の画像の真ん中に塗りつぶし円を描画します | 2.3 画像を取得して中心位置を描画(塗りつぶし円で表示) |
| 04_opencv_draw_hollow_circle.py | OpenCV で USB カメラを開き、リアルタイム表示の画像の真ん中に中空円を描画します | 2.4 画像を取得して中心位置を描画(中空円で表示) |
| 05_opencv_draw_multi_circle.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に大きさ・位置・色の異なる塗りつぶし円と中空円を描画します | 2.5 ランダムな円の描画 |
| 06_opencv_draw_line_level.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に色がランダムな垂直線を 10 本描画します | 2.6 ランダムな垂直線の描画 |
| 07_opencv_draw_line_vertical.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に色がランダムな水平線を 10 本描画します | 2.7 ランダムな水平線の描画 |
| 08_opencv_draw_multi_line.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に色や太さの異なる線を 10 本描画します | 2.8 ランダムな水平線と垂直線の描画 |
| 09_opencv_draw_rectangle.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に赤い矩形を描画します | 2.9 赤い矩形枠の描画 |
| 10_opencv_draw_multi_rectangle.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に大きさ・色・位置がランダムな矩形を描画します | 2.10 ランダムな矩形枠の描画 |
| 11_opencv_draw_other_shape.py | OpenCV で USB カメラを開き、リアルタイム表示の画像に色・位置がランダムな三角形、五芒星、正六角形を描画します | 2.11 三角形・五角形などの多角形の描画 |
| 12_opencv_cut_img.py | OpenCV で USB カメラを開き、リアルタイム表示の画像からクロップ領域の画像を選択します | 2.12 画像を取得して固定領域をクロップ |
| 13_opencv_cut_img_mouse.py | OpenCV で USB カメラを開き、リアルタイム表示の画像上で任意の 2 か所をマウスでクリックすると、クロップ領域の画像を表示します(キーボードの r キーでクロップ領域をリセット) | 2.13 マウス操作による対象画像のクロップ |
| 14_opencv_rotate_img.py | OpenCV で USB カメラを開き、リアルタイム表示の画像を 30、60、90、120 度で回転させます | 2.14 さまざまな角度での画像の回転 |
| 15_opencv_rotate_img_gif.py | OpenCV で USB カメラを開き、リアルタイム表示の画像で回転画像を動的にリアルタイム表示します | 2.15 回転画像の動的リアルタイム表示 |
2. 応用実験《02_usbcam_advanced_experiment》
| プログラム名 | 内容 | 実践例 |
|---|---|---|
| 01_get_hsv_mouse.py | 画像上の任意の点をマウスでクリックすると、ターミナルに HSV 値を出力します | 2.16 マウスで画像上の点を選択して HSV 値を確認 |
| 02_get_hsv_strip.py | スライダーツールを使い、HSV 処理後の画像を表示します | 2.17 スライダーによる画像の HSV 範囲値の取得 |
| 03_get_hsv_strip_splice.py | スライダーツールを使い、HSV 処理後の画像を表示します(横並び表示) | 2.18 HSV 処理後の画像の結合表示(横並び表示) |
| 04_get_hsv_strip_findcounters.py | スライダーツールを使い、HSV 処理後に輪郭を表示した画像を表示します | 2.19 HSV 色検出と画像の輪郭検出 |
| 05_get_hsv_strip_counters_limit.py | スライダーツールを使い、HSV 処理後に条件を満たす輪郭の中心点を表示します | 2.20 HSV と画像の輪郭・中心点の描画 |
| 06write_hsv.py | 取得した HSV 色域値をプログラムに書き込みます | 2.21 HSV 色域値をプログラムに書き込む |
| 07_get_lab_mouse.py | 画像上の任意の点をマウスでクリックすると、ターミナルに LAB 値を出力します | 2.22 画像上の点を選択して LAB 値を確認 |
| 08_get_lab_strip_counters_limit.py | スライダーツールを使い、LAB 処理後に条件を満たす輪郭の中心点を表示します | 2.23 LAB 値処理による画像の輪郭・中心点の表示 |
| 09_write_lab.py | 取得した LAB 色域値をプログラムに書き込みます | 2.24 LAB 色域値をプログラムに書き込む |
ハードウェアプラットフォーム
OpenCV のプログラムは RDK X5 上でも、Windows を搭載した PC 上でも実行できます。
Windows を搭載した PC 上で実行したい場合は、コード内のカメラを開く部分を変更するだけです。
# 打开默认摄像头(使用udev规则)
#cap = cv2.VideoCapture("/dev/mycamera") //适合Linux 的设备管理机制(如RDK X5上)
cap = cv2.VideoCapture(0) //在windows平台下打开摄像头;
ライブラリと実行環境
Python と OpenCV ライブラリをインストールする必要があります。具体的な手順は以下のとおりです。
1. OpenCV(Python 版)のインストール
pip によるインストール
OpenCV(Python 版)をインストールするための前提条件:
- Python がインストールされていること(Python 3.x の使用を推奨)。
- pip(Python のパッケージ管理ツール)がインストールされていること。
以下のコマンドでインストールされているか確認します。
python3 -V
pip -V
注意: Python 2.7.9 以降または Python 3.4 以降には pip が標準で付属しています。
pip で OpenCV をインストールするのが最も簡単で直接的な方法です。コマンドラインで以下のコマンドを入力するだけです。
pip install opencv-python
インストールが遅い場合は、pip のミラーを切り替えることができます(例:清華大学ミラー)。
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
インストール完了後、以下のコードで OpenCV が正常にインストールされたか確認できます。
import cv2
print(cv2.__version__)
OpenCV のバージョン番号(例:4.13.0)が出力されれば、インストールは成功です。
ドキュメント