51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 2784|回复: 0

[资料] VC与Halcon参数创建、读取

[复制链接]
  • TA的每日心情
    点赞
    昨天 10:23
  • 签到天数: 956 天

    连续签到: 1 天

    [LV.10]以坛为家III

    379

    主题

    1552

    帖子

    7289

    积分

    Rank: 9

    积分
    7289

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

    发表于 2017-2-20 12:05:35 | 显示全部楼层 |阅读模式

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

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

    x
    创建参数(类似下面函数)
    1. bool Write_Battery_Params(Hobject Image,HTuple WindowHandle,HTuple FilePath)
    2. {
    3.         Hobject ImageReduced,RectangleModel,ModelContours,ContoursAffinTrans,Regions,Rectangle;

    4.         HTuple Width,Height,ModelID,HomMat2D,Index,Exception;
    5.         HTuple Row1,Column1,Row2,Column2,Row3,Column3,Row4,Column4,Phi1,Length1_1,Length1_2;
    6.         HTuple ModelPosition,ROIRows,ROICols,Direct,Row,Column,Angle,Score;

    7.         try
    8.         {
    9.           set_draw(WindowHandle,"margin");
    10.           get_image_size(Image, &Width, &Height);

    11.           disp_message(WindowHandle, "请绘制电池查找模板!", "window", 12, 12, "green", "true");
    12.           draw_rectangle2(WindowHandle, &Row1, &Column1, &Phi1, &Length1_1, &Length1_2);
    13.           gen_rectangle2(&RectangleModel, Row1, Column1, Phi1, Length1_1, Length1_2);

    14.           reduce_domain(Image, RectangleModel, &ImageReduced);
    15.           create_shape_model(ImageReduced, "auto", HTuple(-90).Rad(), HTuple(360).Rad(), 0.0175, "auto", "use_polarity", "auto", "auto", &ModelID);
    16.           get_shape_model_contours(&ModelContours, ModelID, 1);
    17.           find_shape_model(Image, ModelID, HTuple(-90).Rad(), HTuple(360).Rad(), 0.5, 1, 0.5, "least_squares", 0, 0.9, &Row, &Column, &Angle, &Score);
    18.           vector_angle_to_rigid(0, 0, 0, Row, Column, Angle, &HomMat2D);
    19.           affine_trans_contour_xld(ModelContours, &ContoursAffinTrans, HomMat2D);
    20.           //保存模板数据
    21.           write_shape_model(ModelID, FilePath+"Model.shm");

    22.           //保存模板坐标信息
    23.           ModelPosition.Reset();
    24.           ModelPosition.Append(Row);
    25.           ModelPosition.Append(Column);
    26.           ModelPosition.Append(Angle);
    27.           write_tuple(ModelPosition, FilePath+"ModelPosition.tup");

    28.           //保存ROI参数
    29.           for (Index=1; Index<=6; Index+=1)
    30.           {
    31.                 disp_message(WindowHandle, "请绘制电池检测框:"+Index, "window", 12, 12, "green",
    32.                         "true");
    33.                 draw_rectangle2(WindowHandle, &Row1, &Column1, &Phi1, &Length1_1, &Length1_2);
    34.                 gen_rectangle2(&Rectangle, Row1, Column1, Phi1, Length1_1, Length1_2);
    35.                 write_region(Rectangle, FilePath+("ROI"+Index)+".reg");
    36.           }

    37.           //保存圆参数
    38.           for (Index=1; Index<=4; Index+=1)
    39.           {
    40.                 disp_message(WindowHandle, ("请绘制圆"+Index)+"检测框", "window", 12, 12, "green", "true");
    41.                 draw_spoke(Image, &Regions, WindowHandle, 10, 20, 5, &ROIRows, &ROICols, &Direct);
    42.                 write_tuple(ROIRows, FilePath+("CircleRows"+Index)+".tup");
    43.                 write_tuple(ROICols, FilePath+("CircleCols"+Index)+".tup");
    44.           }

    45.           //保存直线参数
    46.           disp_message(WindowHandle, "请绘制电源接口拟合直线", "window", 12, 12, "green", "true");
    47.           draw_rake(&Regions, WindowHandle, 10, 100, 20, &Row1, &Column1, &Row2, &Column2);
    48.           write_tuple(((Row1.Concat(Column1)).Concat(Row2)).Concat(Column2), "Line1.tup");


    49.           disp_message(WindowHandle, "请绘制U型接口拟合直线", "window", 12, 12, "green",  "true");
    50.           draw_rake(&Regions, WindowHandle, 1, 100, 20, &Row3, &Column3, &Row4, &Column4);
    51.           write_tuple(((Row3.Concat(Column3)).Concat(Row4)).Concat(Column4), "Line2.tup");
    52.         }
    53.         catch (HException &HDevExpDefaultException)
    54.         {
    55.                 HDevExpDefaultException.ToHTuple(&Exception);
    56.                 return false;
    57.         }
    58.         return true;
    59. }
    复制代码
    读取参数(类似函数)
    1. bool Read_Battery_Params(HTuple FilePath,HTuple &ModelID,HTuple &ModelPosition,Hobject &Region1,Hobject &Region2,Hobject &Region3,Hobject &Region4,Hobject &Region5,Hobject &Region6,
    2.         HTuple &Line1Tuple,HTuple &Line2Tuple,HTuple &CircleRows1,HTuple &CircleRows2,HTuple &CircleRows3,HTuple &CircleRows4,HTuple &CircleCols1,HTuple &CircleCols2,HTuple &CircleCols3,HTuple &CircleCols4)
    3. {
    4.         Hobject Image;
    5.         HTuple  Exception;
    6.         try
    7.         {
    8.                 read_shape_model(FilePath+"Model.shm", &ModelID);
    9.                 read_tuple(FilePath+"ModelPosition.tup", &ModelPosition);
    10.                 read_region(&Region1, FilePath+"ROI1.reg");
    11.                 read_region(&Region2, FilePath+"ROI2.reg");
    12.                 read_region(&Region3, FilePath+"ROI3.reg");
    13.                 read_region(&Region4, FilePath+"ROI4.reg");
    14.                 read_region(&Region5, FilePath+"ROI5.reg");
    15.                 read_region(&Region6, FilePath+"ROI6.reg");
    16.                 read_tuple(FilePath+"Line1.tup", &Line1Tuple);
    17.                 read_tuple(FilePath+"Line2.tup", &Line2Tuple);
    18.                 read_tuple(FilePath+"CircleRows1.tup", &CircleRows1);
    19.                 read_tuple(FilePath+"CircleRows2.tup", &CircleRows2);
    20.                 read_tuple(FilePath+"CircleRows3.tup", &CircleRows3);
    21.                 read_tuple(FilePath+"CircleRows4.tup", &CircleRows4);
    22.                 read_tuple(FilePath+"CircleCols1.tup", &CircleCols1);
    23.                 read_tuple(FilePath+"CircleCols2.tup", &CircleCols2);
    24.                 read_tuple(FilePath+"CircleCols3.tup", &CircleCols3);
    25.                 read_tuple(FilePath+"CircleCols4.tup", &CircleCols4);
    26.         }
    27.         catch (HException &HDevExpDefaultException)
    28.         {
    29.                 HDevExpDefaultException.ToHTuple(&Exception);
    30.                 return false;
    31.         }

    32.         return true;
    33. }
    复制代码
    通过上面两个函数,就可以进行读写参数了,然后加把加载的参数写到检测等函数中去检测就可以了。

    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

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

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

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