opencv之uchar*转为Mat类型
来源:华佗健康网
项目中遇到需要将uchar*数据流转换为Mat类型进行处理,以此记录一下。
一、cv::imdecode函数
Reads an image from a buffer in memory.
#include <opencv2/imgcodecs.hpp>
Mat cv::imdecode ( InputArray buf,
int flags
)
Mat cv::imdecode ( InputArray buf,
int flags,
Mat * dst
)
函数参数:
InputArray buf: 可以是Mat、Mat_<T>、Mat_<T, m, n>、vector<T>、vector<vector<T>>、 vector<Mat>等类型数据
int flag: 同imread的flag。
Mat *dst: 指定读取后图像指针,可不用。
二、使用imdecode
因为imdecode函数不支持uchar*数据,所以使用前应将数据进行转换,这里我转为vector<unsigned char>类型。
unsigned char* pData;
unsigned int dataLen=100; //获取的数据流已知长度
vector <unsigned char> vec (pData,pData+datalen);
cv::Mat img=cv::imcode(vec,cv::IMREAD_COLOR);
因篇幅问题不能全部显示,请点此查看更多更全内容