unsigned char*转为Mat
时间: 2023-07-30 15:09:07 浏览: 298
unsigned char数组转成string 用16进制表示
可以使用OpenCV库中的函数将 unsigned char* 转换为 Mat。假设 unsigned char* 存储了一张图像的数据,可以按照以下步骤进行转换:
1. 创建一个空的 Mat 对象,指定其大小和数据类型:
```
cv::Mat image(height, width, CV_8UC1);
```
其中,height 和 width 分别为图像的高度和宽度,CV_8UC1 表示每个像素用 8 位无符号整数表示,且图像只有一个通道。
2. 将 unsigned char* 中的数据复制到 Mat 中:
```
memcpy(image.data, data, height * width);
```
其中,data 为 unsigned char*,image.data 指向 Mat 中的图像数据。
完整代码示例:
```
#include <opencv2/opencv.hpp>
int main() {
// 假设 unsigned char* data 存储了图像数据
unsigned char* data;
int height, width;
// 创建空的 Mat 对象
cv::Mat image(height, width, CV_8UC1);
// 将数据复制到 Mat 中
memcpy(image.data, data, height * width);
// 显示图像
cv::imshow("image", image);
cv::waitKey(0);
return 0;
}
```
阅读全文