Opencv cv::Matデータ型まとめ

2861 ワード

次の2つのシーンでOpenCVを使用する場合は、行列要素のデータ型を事前に知る必要があります.
  • atメソッドを使用してデータ要素にアクセスする場合、データ型
  • を示す.
  • が数値演算をする場合、例えば整数除算か浮動小数点数除算か.

  • cv::Matクラスのオブジェクトには、行列要素のデータ型を返すメンバー関数type()があります.
    戻り値はintタイプであり、異なる戻り値は異なるタイプを表し、具体的な対応関係は以下の通りである.
    を選択します.
    C1
    C2
    C3
    C4
    CV_8U
    0
    8
    16
    24
    CV_8U
    1
    9
    17
    25
    CV_8U
    2
    10
    18
    26
    CV_8U
    3
    11
    19
    27
    CV_8U
    4
    12
    20
    28
    CV_8U
    5
    13
    21
    29
    CV_8U
    6
    14
    22
    30
    ヘッダのC 1,C 2,C 3,C 4は、チャネル数を指し、例えば、
  • 階調画像は1チャネルしかなく、C 1である.
  • JPEG形式のRGBカラー画像は、3チャネル、C 3
  • である.
  • PNG形式のカラー画像は、RGB 3チャネルの他に透明度チャネルが1つあるので、C 4である.

  • 数値計算前にデータ型を明確にするためだけなら、ここを見ればいいのです
    atメソッドを使用してデータ要素にアクセスする場合は、次の手順に従います.
    単一チャネルを例にとると,at法はCV_ではなくucharのようなデータ型を受け入れるからである.8U.
    既知のチャネル数と各チャネルデータ型の場合、atメソッドに指定されたデータ型は以下の表に示す.
    を選択します.
    C1
    C2
    C3
    C4
    C6
    uchar
    uchar
    cv::Vec2b
    cv::Vec3b
    cv::Vec4b
    short
    short
    cv::Vec2s
    cv::Vec3s
    cv::Vec4b
    int
    int
    cv::Vec2i
    cv::Vec3i
    cv::Vec4i
    float
    float
    cv::Vec2f
    cv::Vec3f
    cv::Vec4f
    cv::Vec6f
    double
    double
    cv::Vec2d
    cv::Vec3d
    cv::Vec4d
    cv::Vec6f
    これで、atを使用して画像のピクセルにアクセスできます.
        cv::Vec3b vec3b = img.at<:vec3b>(0,0);
        uchar vec3b0 = img.at<:vec3b>(0,0)[0];
        uchar vec3b1 = img.at<:vec3b>(0,0)[1];
        uchar vec3b2 = img.at<:vec3b>(0,0)[2];
        std::cout<

    上記データ型および取値範囲

    特定のタイプ
    値範囲
    CV_8U
    8ビット符号なし整数
    (0……255)
    CV_8S
    8ビット符号整数
    (-128……127)
    CV_16U
    16ビット符号なし整数
    (0……65535)
    CV_16S
    16ビット符号整数
    (-32768……32767)
    CV_32S
    32ビット符号整数
    (-2147483648……2147483647)
    CV_32F
    32ビット浮動小数点数
    (-FLT_MAX ………FLT_MAX,INF,NAN)
    CV_64F
    64ビット浮動小数点数
    (-DBL_MAX ……….DBL_MAX,INF,NAN)
    Vecクラスの定義:
    template class Vec : public Matx<_tp n=""> {...};
    
    typedef Vec Vec2b;
    typedef Vec Vec3b;
    typedef Vec Vec4b;
    
    typedef Vec Vec2s;
    typedef Vec Vec3s;
    typedef Vec Vec4s;
    
    typedef Vec Vec2i;
    typedef Vec Vec3i;
    typedef Vec Vec4i;
    
    typedef Vec Vec2f;
    typedef Vec Vec3f;
    typedef Vec Vec4f;
    typedef Vec Vec6f;
    
    typedef Vec Vec2d;
    typedef Vec Vec3d;
    
    typedef Vec Vec4d;
    typedef Vec Vec6d;
    

    参照リンク:https://www.jianshu.com/p/204f292937bb