2013-11-21 67 views

回答

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"); 
+0

的问题是,PTR,定义的方式,可见只有内如果statment。 –

+0

@ old-ufo ..是的,我只是想用一个例子来清除这个概念。联盟或类似的东西可以用来避免这个问题。 – sgarizvi