51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1100|回复: 2
收起左侧

[资料] Halcon 和 C# 联合编程 - 图像变量的相互转换(HObject、HImage、B...

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

    连续签到: 2 天

    [LV.4]偶尔看看III

    4

    主题

    16

    帖子

    474

    积分

    Rank: 2Rank: 2

    积分
    474
    发表于 2019-1-17 11:23:25 | 显示全部楼层 |阅读模式

    正式员工 |主题 4|帖子 16|积分 474

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

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

    x
    下面代码是我在搜索 get_image_pointer1 过程中得到,给我带来了一些灵感。

    /// <summary>
    /// 灰度图像变量 HObject -> Bitmap
    /// 原文:https://blog.csdn.net/bingbingxie1/article/details/83344704
    /// </summary>
    public static Bitmap HObject2Bitmap(HObject ho)
    {
        try
        {
            HTuple type, width, height, pointer;
            //HOperatorSet.AccessChannel(ho, out ho, 1);
            HOperatorSet.GetImagePointer1(ho, out pointer, out type, out width, out height);
            //himg.GetImagePointer1(out type, out width, out height);

            Bitmap bmp = new Bitmap(width.I, height.I, PixelFormat.Format8bppIndexed);
            ColorPalette pal = bmp.Palette;
            for (int i = 0; i <= 255; i++)
            {
                pal.Entries[i] = Color.FromArgb(255, i, i, i);
            }
            bmp.Palette = pal;
            BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
            int PixelSize = Bitmap.GetPixelFormatSize(bitmapData.PixelFormat) / 8;
            int stride = bitmapData.Stride;
            int ptr = bitmapData.Scan0.ToInt32();
            for (int i = 0; i < height; i++)
            {
                CopyMemory(ptr, pointer, width * PixelSize);
                pointer += width;
                ptr += bitmapData.Stride;
            }

            bmp.UnlockBits(bitmapData);
            return bmp;
        }
        catch (Exception exc)
        {
            return null;
        }
    }
    /// <summary>
    /// 灰度图像变量 HObject -> HImage
    /// 原文:https://blog.csdn.net/pudongdong/article/details/53574742
    /// </summary>
    public HImage HObject2HImage(Hobject hobject)
    {
        HImage image;
        HTuple type, width, height, pointer;
        gHOperatorSet.GetImagePointer1(ho, out pointer, out type, out width, out height);
        image.GenImage1(type, width, height, pointer);
        return image;
    }

    评分

    参与人数 1热心值 +1 收起 理由
    Criss + 1 鼓励转贴优秀软件、源码和文档!.

    查看全部评分

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

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

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

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

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 688 天

    连续签到: 1 天

    [LV.9]以坛为家II

    358

    主题

    1410

    帖子

    5680

    积分

    Rank: 9

    积分
    5680

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2019-1-17 11:37:14 | 显示全部楼层

    管理员 |主题 358|帖子 1410|积分 5680

    代码初步看了下,应该没有问题大问题,核心就是图片的数据指针,然后对应大小转换即可!
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
  • TA的每日心情
    叹气
    2019-5-31 08:20
  • 签到天数: 5 天

    连续签到: 2 天

    [LV.2]偶尔看看I

    0

    主题

    42

    帖子

    82

    积分

    Rank: 1

    积分
    82
    发表于 2019-5-28 10:35:52 | 显示全部楼层

    试用员工 |主题 0|帖子 42|积分 82

    新手正好学习用到,感谢

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

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

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

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

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

    本版积分规则

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

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

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

    Powered by 51Halcon机器视觉 X3.4 Licensed© 2015-2019 Comsenz Inc.

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