/// <summary>
/// 把HBITMAP 转成Mat
/// </summary>
/// <param name="hBmp"></param>
/// <param name="mat"></param>
/// <returns></returns>
bool Utils::HBitmap2Mat(HBITMAP& hBmp, Mat& mat)
{
BITMAP Bmp;
GetObject(hBmp, sizeof(BITMAP), &Bmp);
int nChannels = Bmp.bmBitsPixel == 1 ? 1 : Bmp.bmBitsPixel / 8;
int depth = Bmp.bmBitsPixel == 1 ? IPL_DEPTH_1U : IPL_DEPTH_8U;
Mat des_mat;
des_mat.create(cvSize(Bmp.bmWidth, Bmp.bmHeight), CV_MAKETYPE(CV_8U, nChannels));
GetBitmapBits(hBmp, Bmp.bmHeight * Bmp.bmWidth * nChannels, des_mat.data);
mat = des_mat;
return true;
}
/// <summary>
/// 把Mat转成HBITMAP
/// </summary>
/// <param name="hBmp"></param>
/// <param name="mat"></param>
/// <returns></returns>
bool Utils::Mat2HBitmap(HBITMAP& hBmp, Mat& mat)
{
//MAT类的TYPE=(nChannels-1+ CV_8U)<<3int nChannels=(mat.type()>>3)-CV_8U+1;
int nChannels = 256;
int iSize = mat.cols * mat.rows * nChannels;
hBmp = CreateBitmap(mat.cols, mat.rows, 1, nChannels * 8, mat.data);
return true;
}