当前位置: 代码迷 >> 综合 >> Mat类型和unsigned char*数据指针类型互转
  详细解决方案

Mat类型和unsigned char*数据指针类型互转

热度:10   发布时间:2024-02-19 20:10:44.0

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;
}

最后

如果觉得文章对您有帮助的话,别忘了给我个赞,谢谢!

  相关解决方案