opencv convertTo不工作

时间:2015-06-17 21:40:34

标签: c++ opencv

我知道其他人已经提出并回答了这个问题。但我仍然无法解决我的问题。我从视频中读取了一个帧,其格式为unsigned char(CV_8U)。我希望将其转换为双精度(CV_64F)。我这样做:

VideoCapture capture(fileName);
Mat image;
capture >> image;
cvtColor(image, image, CV_BGR2GRAY);
image.convertTo(image, CV_32FC1, 1.0/255);
cout << typeid(image.data[0]).name() << endl;

但结果显示图像仍然是unsigned char。我的代码出了什么问题?感谢。

1 个答案:

答案 0 :(得分:2)

这不是测试类型转换的正确方法。

data中的OpenCV cv::Mat变量始终为uchar类型。它基本上是指向内存的指针,但并不意味着数据是uchar

要获取图像数据的类型,请使用type()功能。下面是一个测试类型是否已成功转换为float(将是)

的示例
cv::DataType<float>::type == image.type();