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:形状マッチングと距離計算。

その他の拡張