存储在OpenCV的Mat结构中的元素的类型

时间:2013-11-21 11:06:29

标签: c++ opencv types mat

是否存在一些方法可用于确定OpenCV中Mat结构中存储的元素的数据类型(例如uchar,cv :: Vec3b ...)?

1 个答案:

答案 0 :(得分:5)

您可以使用cv::Mat::type()来确定cv::Mat中存储的像素的数据类型。

类型可以确定如下:

int type = mat.type();
if(type == CV_8UC1)
    unsigned char* ptr = mat.ptr<unsigned char>();
else if(type == CV_8UC3)
    cv::Vec3b* ptr = mat.ptr<cv::Vec3b>();
else if(type == CV_16UC3)
    unsigned short* ptr = mat.ptr<unsigned short>();
else if(type == CV_16UC3)
    cv::Vec3w* ptr = mat.ptr<cv::Vec3w>();
else if(type == CV_32FC1)
    float* ptr = mat.ptr<float>();
else if(type == CV_32FC3)
    cv::Vec3f* ptr = mat.ptr<cv::Vec3f>();
else
    printf("Unknown type\n");