opencv 转换到不起作用



我知道这个问题已经被其他人问过并回答了。但我仍然不能不解决我的问题。我从视频中读取了一个帧,该帧的格式为无符号字符 (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;

但结果显示图像仍然是无符号字符。我的代码有什么问题?谢谢。

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

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

要获取图像数据类型,请使用type()函数。下面是一个示例,用于测试类型是否已成功转换为浮点数(这将是)

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

相关内容

  • 没有找到相关文章

最新更新