OpenCV 基礎モジュール
OpenCV は強力なコンピュータビジョンライブラリであり、複数のモジュールで構成され、各モジュールは異なる機能に特化しています。
OpenCV は複数のモジュールで構成されており、各モジュールは異なる機能を提供します。
以下は OpenCV で最もよく使われるモジュールの一部です:
- cv2.core: コアモジュール。画像処理の基本機能(画像配列の表現や操作など)を含みます。
- cv2.imgproc: 画像処理モジュール。フィルタリング、画像変換、モルフォロジー演算などのさまざまな画像操作を提供します。
- cv2.highgui: グラフィカルユーザーインターフェースモジュール。画像やビデオを表示する機能を提供します。
- cv2.video: ビデオ処理機能を提供します。ビデオキャプチャ、ビデオストリームの処理など。
- cv2.features2d: 特徴検出とマッチングモジュール。コーナー、エッジ、キーポイント検出などを含みます。
- cv2.ml: 機械学習モジュール。複数の機械学習アルゴリズムを提供し、画像分類、回帰、クラスタリングなどができます。
- cv2.calib3d : カメラキャリブレーションと3D再構成モジュール。
- cv2.objdetect : 物体検出モジュール。
- cv2.dnn : ディープラーニングモジュール。
1. Core モジュール
機能:OpenCV のコア機能を提供します。基本データ構造、行列操作、描画関数などが含まれます。
主なクラスと関数:
-
Mat:OpenCV で画像や行列を格納するための基本データ構造。
-
Scalar:色や画素値を表すために使用します。
-
Point、Size、Rect:点、サイズ、長方形を表すために使用します。
-
基本描画関数:
cv.line()、cv.circle()、cv.rectangle()、cv.putText()など。
応用シーン:
-
画像の基本操作(作成、コピー、トリミングなど)。
-
幾何図形やテキストの描画。
2. Imgproc モジュール
機能:画像処理機能を提供します。画像フィルタリング、幾何変換、色空間変換などが含まれます。
主なクラスと関数:
-
画像フィルタリング:
cv.blur()、cv.GaussianBlur()、cv.medianBlur()など。 -
幾何変換:
cv.resize()、cv.warpAffine()、cv.warpPerspective()など。 -
色空間変換:
cv.cvtColor()(BGRからグレースケール、BGRからHSVなど)。 -
閾値処理:
cv.threshold()、cv.adaptiveThreshold()。 -
エッジ検出:
cv.Canny()、cv.Sobel()、cv.Laplacian()。
応用シーン:
-
画像の平滑化、シャープ化、エッジ検出。
-
画像の拡大縮小、回転、アフィン変換。
-
画像の二値化、色空間変換。
3. HighGUI モジュール
機能:高水準GUIとメディアI/O機能を提供し、画像の表示と対話に使用します。
主なクラスと関数:
-
画像表示:
cv.imshow()、cv.waitKey()、cv.destroyAllWindows()。 -
ビデオキャプチャ:
cv.VideoCapture()、cv.VideoWriter()。 -
マウスとキーボードイベント:
cv.setMouseCallback()。
応用シーン:
-
画像とビデオの表示。
-
カメラまたはビデオファイルのキャプチャ。
-
ユーザー操作の処理(マウスクリック、キーボード入力など)。
4. Video モジュール
機能:ビデオ分析機能を提供します。動き検出、物体追跡などが含まれます。
主なクラスと関数:
-
背景差分:
cv.createBackgroundSubtractorMOG2()、cv.createBackgroundSubtractorKNN()。 -
オプティカルフロー法:
cv.calcOpticalFlowPyrLK()。 -
物体追跡:
cv.TrackerKCF_create()、cv.TrackerMOSSE_create()。
応用シーン:
-
ビデオ内の動き検出。
-
物体追跡(歩行者、車両の追跡など)。
5. Calib3d モジュール
機能:カメラキャリブレーションと3D再構成機能を提供します。
主なクラスと関数:
-
カメラキャリブレーション:
cv.calibrateCamera()、cv.findChessboardCorners()。 -
3D再構成:
cv.solvePnP()、cv.reprojectImageTo3D()。
応用シーン:
-
カメラキャリブレーション(レンズ歪みの除去に使用)。
-
3D再構成(2D画像から3D情報を復元するなど)。
6. Features2d モジュール
機能:特徴検出と記述機能を提供します。
主なクラスと関数:
-
特徴検出:
cv.SIFT_create()、cv.ORB_create()、cv.SURF_create()。 -
特徴マッチング:
cv.BFMatcher()、cv.FlannBasedMatcher()。 -
キーポイント描画:
cv.drawKeypoints()。
応用シーン:
-
画像の特徴抽出とマッチング。
-
画像のパノラマ合成、物体認識。
7. Objdetect モジュール
機能:物体検出機能を提供します。
主なクラスと関数:
-
Haar 特徴分類器:
cv.CascadeClassifier()(顔検出に使用)。 -
HOG 特徴分類器:歩行者検出に使用します。
応用シーン:
-
顔検出、歩行者検出。
8. ML モジュール
機能:機械学習アルゴリズムを提供します。
主なクラスと関数:
-
サポートベクターマシン (SVM):
cv.ml.SVM_create()。 -
K平均法 (K-Means):
cv.kmeans()。 -
ニューラルネットワーク (ANN):
cv.ml.ANN_MLP_create()。
応用シーン:
-
画像分類、クラスタリング分析。
9. DNN モジュール
機能:ディープラーニング機能を提供し、事前学習済みのディープラーニングモデルの読み込みと実行をサポートします。
主なクラスと関数:
-
モデルの読み込み:
cv.dnn.readNetFromCaffe()、cv.dnn.readNetFromTensorflow()。 -
順伝播:
net.forward()。
応用シーン:
-
画像分類、物体検出、セマンティックセグメンテーション。
10. その他のモジュール
-
Flann:高速近似最近傍探索。
-
Photo:画像修復とノイズ除去。
-
Stitching:画像のパノラマ合成。
-
Shape:形状マッチングと距離計算。