1.Mat转unsigned char*函数
void MatToData(Mat srcImg, void*& data)
{int nFlag = srcImg.channels() * 8;//一个像素的bitsint nHeight = srcImg.rows;int nWidth = srcImg.cols;int nBytes = nHeight * nWidth * nFlag / 8;//图像总的字节if (data)delete[] data;data = new unsigned char[nBytes];//new的单位为字节memcpy(data, srcImg.data, nBytes);//转化函数,注意Mat的data成员
}
2.unsigned char*转Mat函数
bool DataToMat(void* data, int nH, int nW, int nFlag, Mat& outImg)//nH,nW为BYTE*类型图像的高和宽,nFlag为通道数
{if (data == nullptr){return false;}int nByte = nH * nW * nFlag / 8;//字节计算int nType = nFlag == 8 ? CV_8UC1 : CV_8UC3;outImg = Mat::zeros(nH, nW, nType);memcpy(outImg.data, (unsigned char*)data, nByte);return true;
}
最后
如果觉得文章对您有帮助的话,别忘了给我个赞,谢谢!