OpenCV学習:Matクラス詳細解析+ソースコード剖析(一)


Matクラスは基本的なデータ構造で、OpenCVのC++系列関数(クラス)に属し、Matの脈絡を把握し、後続の画像処理作業に役立つので、Matクラスについてよく話します.
OpenCVにおけるMatクラス宣言パス:opencv-2.4.5/modules/core/include/opencv2/core/core.hpp
OpenCVにおけるMatクラスの実現経路:opencv-2.4.5/modules/core/include/opencv2/core/mat.hpp
                                                 opencv-2.4.5/modules/core/src/matrix.cpp
Matクラスは次のように宣言されています.
class CV_EXPORTS Mat
{
   //Mat        ,    Mat   ,     Mat         ,                  
    ......
public:
    int flags;//   ,          
    int dims;//     
    int rows, cols;//        
    uchar* data;//       ,Key Point!  ,          unsigned char   。

    int* refcount;//       (C++         )
    ......
 };

さて、Matの基礎データ構造は上記のようになっていますが、Matのメンバー関数から、MatというOpenCVの基本データ構造の神秘的なベールを開きます.
これらの関数は、上から下まで説明することはできません.論理的であるべきです.これらの関数を次のように分類します.
(1)コンストラクタ
(2)マトリクス要素位置決め関数:at族とptr族関数
(3)Matにおける重要データメンバーsizeとstep