51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 233|回复: 1
收起左侧

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

[复制链接]
  • TA的每日心情
    害羞
    2018-8-6 09:08
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]常住居民I

    37

    主题

    64

    帖子

    606

    积分

    Rank: 3

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

    部门助理 |主题 37|帖子 64|积分 606

    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);
            }
        }

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    3 天前
  • 签到天数: 376 天

    连续签到: 5 天

    [LV.9]以坛为家II

    2

    主题

    43

    帖子

    571

    积分

    Rank: 3

    积分
    571

    切换助手验证会员

    发表于 2019-9-10 09:25:45 | 显示全部楼层

    部门助理 |主题 2|帖子 43|积分 571

    camera.BitMap 是什么类型的变量?如果不属于Halcon的变量,需要做conversion。利用gen_image之类的算子。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用反馈 | 51Halcon论坛管理团队论坛管理团队

    申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    Powered by 51Halcon机器视觉. Copyright © 2001-2020, Tencent Cloud X3.4.

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