2013-11-21 105 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