5

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

我加载了.jpg并将其转换为灰度cv::cvtColor(*input_image_grayscale, *input_image_grayscale, CV_BGR2GRAY);

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

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

4

1 回答 1

4

type 返回的值只是 OpenCV 用预处理器定义声明的整数。您可以在 switch 语句中检查它,如下所示:

switch( matrixType )
{
    case CV_8UC1:

    .... check for other types
}

8U, 在该示例中指的是无符号字符,并且C1指的是单通道图像。CV_8UC1 被定义为0,所以这是你的垫子的类型,你应该使用unsigned char你的参考类型。

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

于 2012-04-22T23:58:35.710 回答