例如,我正在尝试在 C++ 中将图像数据从 char 转换为 double
Mat img = imread(image_file);
Mat img_double;
img.convertTo(img_double, CV64FC3);
然后我认为 img_double 应该将图像数据存储在 DOUBLE 中,我尝试了 img_double.depth() 它显示为 6,这是正确的。但是,如何访问该 DOUBLE 数据? img_double.data 仍然是 uchar* 类型。有谁能够帮助我?谢谢!
最佳答案
C/C++ 使用 unsigned char
作为一堆字节的通用数据类型。
因此,在 cv::Mat
中有一个 uchar 数据指针避免为每种类型的图像更改 thsi 指针的声明,从而避免子类化 cv::Mat
并允许通过 memcpy
直接传输数据或指针矫揉造作。
然后使用转换来返回库用户所需的数据类型。
请注意,OpenCV 2.x 为您提供了模板化函数 cv::Mat::ptr<type>(ìnt rowIndex)
获取指向给定行开头的指针。
例如,指向 double 数据类型的灰度图像第 6 行开头的指针是通过以下方式完成的:
double *rowPtr = my_mat.ptr<double>(6)
关于c++ - C++中的OpenCV图像数据类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15469120/