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

How to convert an opencv mat image to gdi bitmap

本文关键字:转换 gdi 位图 图像 opencv      更新时间:2023-10-16

我想将openCV Mat文件转换为GDI+位图图像。我找不到有关如何执行此操作的任何信息?

我认为没有直接的方法可以做到这一点,但我希望它不涉及将其写入文件并回读(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;
}

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

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的生命周期内保持活动状态。