Halcon机器视觉论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 54|回复: 0
收起左侧

[资料] BYTE类型转换Hobject类型

[复制链接]
  • TA的每日心情
    点赞
    7 天前
  • 签到天数: 38 天

    连续签到: 1 天

    [LV.5]常住居民I

    13

    主题

    48

    帖子

    537

    积分

    Rank: 3

    积分
    537
    发表于 2019-6-9 23:35:39 | 显示全部楼层 |阅读模式

    部门助理 |主题 13|帖子 48|积分 537

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

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

    x
    在与halcon的混编中,有时会用到数据类型转换。
    例如在相机采集与后期的图像处理中,一般需要将采集到的BYTE类型数据转化成halcon中对应的Hobject类型方可处理。
    在halcon11中提供了一个函数及其例程:
    1. void NewImage(Hobject *new)
    2. {
    3.   unsigned char  image[768*525];
    4.   int            r,c;
    5.   for (r=0; r<525; r++)
    6.     for (c=0; c<768; c++)
    7.       image[r*768+c] = c % 255;
    8.   gen_image1(new,"byte",768,525,(Hlong)image);
    9. }
    复制代码
    其中,gen_image1()在halcon11中的函数名称改为GenImage1();
    对于彩色图像halcon提供了gen_image3()/GenImage3();
    1. void NewRGBImage(Hobject *new)
    2. {
    3.   unsigned char  red[768*525];
    4.   unsigned char  green[768*525];
    5.   unsigned char  blue[768*525];
    6.   int            r,c;
    7.   for (r=0; r<525; r++)
    8.     for (c=0; c<768; c++)
    9.     {
    10.       red[r*768+c]   = c % 255;
    11.       green[r*768+c] = (767 - c) % 255;
    12.       blue[r*768+c]  = r % 255;
    13.     }
    14.     gen_image3(new,"byte",768,525,(Hlong)red,(long)green,(long)blue);
    15. }

    16. main()
    17. {
    18.   Hobject  rgb;
    19.   open_window(0,0,768,525,0,"","",&WindowHandle);
    20.   NewRGBImage(&rgb);
    21.   disp_color(rgb,WindowHandle);
    22.   clear_obj(rgb);
    23. }
    复制代码

    另,halcon还提供了带有存储管理的函数GenImage1Extern()
    1. void NewImage(Hobject *new)
    2. {
    3.   unsigned char  *image;
    4.   int            r,c;
    5.   image = malloc(640*480);
    6.   for (r=0; r<480; r++)
    7.     for (c=0; c<640; c++)
    8.       image[r*640+c] = c % 255;
    9.   gen_image1_extern(new,"byte",640,480,(Hlong)image,(long)free);
    10. }
    复制代码

    和GenImage3Extern()
    1. void NewImage(Hobject *new)
    2. {
    3.   unsigned char  *image_red;
    4.   unsigned char  *image_green;
    5.   unsigned char  *image_blue;
    6.   int            r,c;
    7.   image_red = malloc(640*480);
    8.   image_green = malloc(640*480);
    9.   image_blue = malloc(640*480);
    10.   for (r=0; r<480; r++)
    11.     for (c=0; c<640; c++)
    12.     {
    13.       image_red[r*640+c] = c % 255;
    14.       image_green[r*640+c] = (c+64) % 255;
    15.       image_blue[r*640+c] = (c+128) % 255;
    16.     }
    17.   gen_image3_extern(new,"byte",640,480,(Hlong)image_red,(long)image_green,(long)image_blue,(long)free);
    18. }
    复制代码

    转载自:https://www.cnblogs.com/youngxin/p/4210162.html

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

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

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

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

    本版积分规则

    申请友链| 小黑屋| 手机版| Archiver| Halcon机器视觉论坛  

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

    Powered by Discuz! X3.4 Licensed© 2001-2019 Comsenz Inc.

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