opencv Mat类型和BYTE*指针类型互转

 1.Mat转BYTE*函数

void MatToByte(Mat srcImg, BYTE*& pImg)
{
	int nFlag = srcImg.channels() * 8;//一个像素的bits
	int nHeight = srcImg.rows;
	int nWidth = srcImg.cols;
	
	int nBytes = nHeight * nWidth * nFlag / 8;//图像总的字节
	if(pImg)
		delete[] pImg;
	pImg = new BYTE[nBytes];//new的单位为字节
	memcpy(pImg, srcImg.data, nBytes);//转化函数,注意Mat的data成员	
}

2.BYTE*转Mat函数

void BYTEToMat(BYTE* pImg, int nH, int nW, Mat& outImg)//nH,nW为BYTE*类型图像的高和宽
{
	int nByte = nH * nW * nFlag / 8;

	pImg = new BYTE[nByte];

	int nType = nFlag == 8 ? CV_8UC1 : CV_8UC3;
	outImg = Mat::zeros(m_nHeight, m_nWidth, nType);
	memcpy(m_matSrc.data, pImg, nByte);
}

猜你喜欢

转载自blog.csdn.net/vict_wang/article/details/81070908