opencv convertTo 不工作

Posted

技术标签:

【中文标题】opencv convertTo 不工作【英文标题】:opencv convertTo not working 【发布时间】:2015-06-17 21:40:34 【问题描述】:

我知道其他人已经提出并回答了这个问题。但我仍然无法解决我的问题。我从视频中读取了一帧,其格式为 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;

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

【问题讨论】:

【参考方案1】:

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

OpenCV 在cv::Mat 中的data 变量始终是uchar 类型。基本上是指向内存的指针,但不代表数据是uchar

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

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

【讨论】:

以上是关于opencv convertTo 不工作的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV - Mat::convertTo() 断言错误。

convertTo 在 opencv 中不起作用

在 c 的 opencv 中,啥函数与 Mat::convertTo 和 cvtColor() 完全相同

c++中的opencv convertTo和Python中的手动转换结果不同

convertTo

opencv中的Conv2