c++ - opencv convertTo 不工作

标签 c++ opencv

我知道这个问题已经被其他人问过并回答过。但我仍然无法解决我的问题。我从视频中读取了一个帧,其格式为 unsigned char (CV_8U)。我希望将其转换为 double (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。我的代码有什么问题?谢谢。

最佳答案

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

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

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

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

关于c++ - opencv convertTo 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30902885/

相关文章:

c++ - Qt 控制台应用程序的标准配置方法是什么?

c++ - Qt QML 和 3d : are these two frameworks the same?

c++ - OpenSceneGraph 内存管理

opengl - 将实时网络摄像头纹理添加到 OpenGL

c++ - 使用 Image.ptr<double>(0);在 OpenCV 中使用彩色图像

iphone - OpenCV IOS实时模板匹配

c++ - 尽管安装了 g++,但仍找不到 ncurses.h

c++ - 在消息 Protobuf 中设置消息的字段

python - QLabel 在 OpenCV 图像处理后没有更新图像

opencv - Emgu CV-各向异性扩散