为什么我在尝试将opencv图像数据指针转换为char*时出错

Why I am getting error when I try to cast an opencv image data pointer to a char*

本文关键字:转换 指针 char 出错 数据 图像 opencv 为什么      更新时间:2023-10-16

我有这个代码:

cv::Mat myImage = imread("Image.png");
char * dataPointer = const_cast<char*>(myImage.data);

但我得到了错误:

'const_cast' : cannot convert from 'uchar *const ' to 'char *'  

为什么我会出现这个错误?

从技术上讲,问题是const_cast只能更改CV限定符,而从uchar *constchar *的强制转换的作用远不止于此:它还将按指针将unsigned char(OpenCV别名为uchar)转换为char

我建议您不要删除const限定符。但是,如果您无法避免,那么将指针转换为uchar*应该对您有效。

cv::Mat myImage = imread("Image.png");
uchar * dataPointer = const_cast<uchar*>(myImage.data);

如果你真的想要char*,那也可以。

char* dp = reinterpret_cast<char*>(dataPointer);