> 文章列表 > OpenCV矩阵元素类型.type()及其访问方式.at<>()

OpenCV矩阵元素类型.type()及其访问方式.at<>()

OpenCV矩阵元素类型.type()及其访问方式.at<>()

  1. cv::Mat的成员函数type()可以获得Mat矩阵元素数据类型,但type()函数返回的是int型数值,需进一步查表, 才能得到对应的数据类型.

    cv符号 c++类型
    8U unsigned char
    8S char
    16U unsigned short
    16S short
    32S int
    32F float
    64F double

    C(n)表示通道数

    类型 C1 C2 C3 C4
    CV_8U 0 8 16 24
    CV_8S 1 9 17 25
    CV_16U 2 10 18 26
    CV_16S 3 11 19 27
    CV_32S 4 12 20 28
    CV_32F 5 13 21 29
    CV_64F 6 14 22 30
  2. .at<>()访问元素
    .at<>()需要知道元素类型,才能访问。
    以单通道为例,at 方法接受的数据类型是 uchar ,而非 CV_8U, 即 img.at<uchar>(2,3)
    以三通道CV8SC3为例,img.at<cv::Vec<uchar,3>>(行,列),或img.at<cv::Vec3i>(行,列)

    数据类型 C1 C2 C3 C4 C6
    CV_8U uchar cv::Vec2b cv::Vec3b cv::Vec<uchar,4> cv::Vec<uchar,6>
    CV_8S char cv::Vec<char,2> cv::Vec<char,3> cv::Vec<char,4> cv::Vec<char,6>
    CV_16U ushort cv::Vec<ushort,2> cv::Vec<ushort,3> cv::Vec<ushort,4> cv::Vec<ushort,6>
    CV_16S short cv::Vec2s cv::Vec3s cv::Vec4s cv::Vec<short,6>
    CV_32S int cv::Vec2i cv::Vec3i cv::Vec4i cv::Vec<int,6>
    CV_32F float cv::Vec2f cv::Vec3f cv::Vec4f cv::Vec6f
    CV_64F double cv::Vec2d cv::Vec3d cv::Vec4d cv::Vec6d