1 将OpenCV Mat转换Gdi+ Bitmap

最近需要在桌面程序中将OpenCV的摄像头画面显示到Windows窗口上,看了之前他们的方式都是使用老版的使用IplImage的CvvImage类,或者是使用修改过的使用Mat的CvvImage类,这种方式只适合单独的将摄像头画面显示在窗口上,但是如果需要在视频画面上叠加显示前景图片的话,这种方式不支持透明度叠加。

如果能够使用Gdi+的话,可以在绘制视频画面的基础上同时在视频画面上通过透明度混合显示半透明的前景图片,这里的关键的第一步是将Opencv的Mat转换为Gdi+的Bitmap。

具体的转换代码如下:

// 将opencv的mat转为Gdiplus的Bitmap
cv::Mat cameraFrame_copy_new;
cv::cvtColor(cameraFrame_copy, cameraFrame_copy_new, CV_BGR2BGRA);
Gdiplus::Bitmap bitmap(cameraFrame_copy_new.cols, cameraFrame_copy_new.rows, cameraFrame_copy_new.step1(), PixelFormat32bppRGB, cameraFrame_copy_new.data);

参考链接