如何确定转换为灰度的cv :: Mat中的数据类型

时间:2012-04-22 23:39:08

标签: c++ opencv

我不确定在哪里可以找到这些信息。

我加载了.jpg并使用cv::cvtColor(*input_image_grayscale, *input_image_grayscale, CV_BGR2GRAY);

将其转换为灰度

然后我尝试使用input_image_grayscale->at<float>(row, col)引用一个像素,但得到一个断言错误。如何确定正确的数据类型(显然不是浮点数)来取消引用?感谢

作为参考,我跑了input_image_grayscale->type()并获得了0。

1 个答案:

答案 0 :(得分:4)

type返回的值只是OpenCV用预处理器定义声明的整数。你可以在这样的开关语句中检查它:

switch( matrixType )
{
    case CV_8UC1:

    .... check for other types
}

8U,在该示例中引用无符号字符,C1引用单个频道图像。 CV_8UC1定义为0,因此这是您的Mat类型,您应该使用unsigned char作为参考类型。

您还可以使用Mat :: depth函数来返回单个矩阵元素大小的类型,因为您已经知道它是单通道图像,因为它是灰度级的。