【问题标题】:How to convert an opencv mat image to gdi bitmap如何将opencv mat图像转换为gdi位图
【发布时间】:2013-10-24 14:00:55
【问题描述】:

我想将 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;
}

【问题讨论】:

  • 关于您编写​​的代码问题的问题必须在问题本身中描述具体问题——并包括有效的代码来重现它。有关指导,请参阅 SSCCE.org。
  • @JohnDibling:添加了一些示例代码。希望它能解释我想要做什么。
  • 我写了一个 CGdiPlus 类,可以满足你的需要:stackoverflow.com/questions/24725155/…
  • 我写了一个完全符合你要求的类:stackoverflow.com/questions/24725155/…

标签: c++ opencv bitmap gdi+


【解决方案1】:

根据documentation,似乎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 的生命周期内保持活动状态。

【讨论】:

  • 我不确定当 OpenCv 图像不继续时它是否有效?
  • @mans 位图连续是什么意思?你能解释一下吗
猜你喜欢
  • 2018-10-09
  • 2015-02-17
  • 2020-09-15
  • 2014-09-22
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多