如何将opencv mat图像转换为gdi位图

时间:2013-10-24 14:00:55

标签: c++ opencv bitmap gdi+

我想将openCV Mat文件转换为GDI + BitMap图像。我找不到有关如何做到这一点的任何信息?

我认为没有直接的方法可以做到这一点,但我希望它不涉及将其写入文件并回读(http://opencv-users.1802565.n2.nabble.com/Convert-IplImage-to-Bitmap-td3784378.html

我需要写一些这样的东西:

#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;

Bitmap GetBitMap(cv::Mat inputImage)
{
   Bitmap bitmap;
   // convert inputImage to bitmap??
   return bitmap;
}

1 个答案:

答案 0 :(得分:1)

根据documentationBitmap似乎有一个构造函数采用预先分配的内存缓冲区。使用此构造函数,您的函数可能如下所示:

Bitmap GetBitMap(cv::Mat inputImage)
{
    cv::Size size = inputImage.size();
    Bitmap bitmap(size.width, size.height, inputImage.step1(), PixelFormat24bppRGB, inputImage.data);
    return bitmap;
}

请注意,您的函数返回的Bitmap不会管理您初始化它的内存。因此,请确保图像数据在Bitmap的生命周期内保持活动状态。