Halcon视觉之家-Halcon视觉技术论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 2433|回复: 1

[待解决] 如何把显示到的picturebox图片当作hobject变量

[复制链接]

该用户从未签到

40

主题

71

帖子

594

积分

Rank: 3

积分
594
发表于 2019-9-9 14:19:16 | 显示全部楼层 |阅读模式

51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

您需要 登录 才可以下载或查看,没有账号?会员注册

x
显示图片是用 pictureBox1来显示的,它的代码如下,因为获得图像显示后还要进行图像处理,放到halcon里使用Hobject 的图像变量,
但是我写了 Hobject  image= camera.BitMap;却报错,请问如何获得这个图像变量呢?
下面是显示图像的所有代码,


   void camera_UpdateImage()
        {
            pictureBox1.Image = camera.BitMap;
        
        }

      public static void CreateBitmap(out Bitmap bitmap, int width, int height, bool color)
        {
            bitmap = new Bitmap(width, height, GetFormat(color));
            if (bitmap.PixelFormat == PixelFormat.Format8bppIndexed)
            {
                ColorPalette colorPalette = bitmap.Palette;
                for (int i = 0; i < 256; i++)
                {
                    colorPalette.Entries[i] = Color.FromArgb(i, i, i);
                }
                bitmap.Palette = colorPalette;
            }
        }
        public static void UpdateBitmap(Bitmap bitmap, byte[] buffer, int width, int height, bool color)
        {
            if (!IsCompatible( bitmap, width, height, color))
            {
                throw new Exception("Cannot update incompatible bitmap.");
            }
            BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
            /* Get the pointer to the bitmap's buffer. */            
            IntPtr ptrBmp = bmpData.Scan0;
            /* Compute the width of a line of the image data. */
            int imageStride = GetStride(width, color);
            /* If the widths in bytes are equal, copy in one go. */
            if (imageStride == bmpData.Stride)
            {
                System.Runtime.InteropServices.Marshal.Copy(buffer, 0, ptrBmp, bmpData.Stride * bitmap.Height );
            }
            else /* The widths in bytes are not equal, copy line by line. This can happen if the image width is not divisible by four. */
            {
                for (int i = 0; i < bitmap.Height; ++i)
                {
                    Marshal.Copy(buffer, i * imageStride, new IntPtr(ptrBmp.ToInt64() + i * bmpData.Stride), width);
                }
            }
            /* Unlock the bits. */
            bitmap.UnlockBits(bmpData);
        }
    }

该用户从未签到

2

主题

43

帖子

511

积分

Rank: 3

积分
511

切换助手验证会员

发表于 2019-9-10 09:25:45 | 显示全部楼层
camera.BitMap 是什么类型的变量?如果不属于Halcon的变量,需要做conversion。利用gen_image之类的算子。
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

视觉培训招生

建议您使用Chrome、Firefox、Edge、360、IE10以上等主流浏览器浏览本论坛

算子查询| 申请友链| 小黑屋| 手机版| Archiver| 业务支持|

© 2015-2021 Halcon视觉之家  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

本站已安全运行:

快速回复 返回顶部 返回列表