2

有没有一种简单的方法可以将灰度 Halcon/MVtec Himage 对象转换为 ac# 位图?此处存在彩色图像的示例代码(mvtec 文档)

  HTuple type, width, height;
  HImage patras = new HImage("patras");

  HImage interleaved = patras.InterleaveChannels("argb", "match", 255);
  IntPtr ptr = interleaved.GetImagePointer1(out type, out width, out height);

  Image img = new Bitmap(width/4, height, width,
                         PixelFormat.Format32bppPArgb, ptr);

  pictureBox.Image = img;

但是从这个示例中,我不清楚如何处理灰度图像。

4

3 回答 3

1

由于您不能直接创建 8 位灰度位图,因此最快的方法是将灰度图像转换为 RGB:

        HImage hiImageNew = new HImage();
        hiImageNew = hiImage.Compose3(hiImage, hiImage);

        hiImageNew = hiImageNew.InterleaveChannels("argb", "match", 255);
        IntPtr ptr = hiImageNew.GetImagePointer1(out htType, out htWidth, out htHeight);
        System.Drawing.Image bImage = new Bitmap(htWidth/4, htHeight, htWidth, System.Drawing.Imaging.PixelFormat.Format32bppPArgb, ptr);
于 2018-07-12T09:42:00.440 回答
1

检查这个: https ://github.com/Joncash/HanboAOMClassLibrary/blob/master/Hanbo.Helper/ImageConventer.cs

在本课程中,您可以找到可以选择灰度或 rgb 图像的功能

public static Bitmap ConvertHalconImageToBitmap(HObject halconImage, bool isColor)
于 2019-03-01T10:47:14.423 回答
1

我已经研究了您的问题,并在此链接https://multipix.com/supportblog/halcon-bitmap-himage-conversion/它解释了如何为您正在寻找的RBG 通道和单通道创建位图对象.

它指出:

可以通过位图类的构造函数从 HALCON 图像创建位图。对于单通道图像,通过使用来自操作员 get_image_pointer1 的指针和图像的尺寸,这很简单。

我相信这意味着它与您给出的示例代码格式完全相同,但您只需删除该行HImage interleaved = patras.InterleaveChannels("argb", "match", 255);

patras如果是灰度图像,您的代码可能如下所示:

HTuple type, width, height;
HImage patras = new HImage("patras");
IntPtr ptr = patras.GetImagePointer1(out type, out width, out height);
Image img = new Bitmap(width/4, height, width, PixelFormat.Format16bppGrayScale, ptr);

pictureBox.Image = img;
于 2018-07-11T09:55:53.157 回答