热点推荐

查看: 1043|回复: 7
收起左侧

[已解决] 有关在vs上读取模板坐标的问题

[复制链接]
  • TA的每日心情
    害羞
    2018-7-13 11:23
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    5

    帖子

    453

    积分

    Rank: 6Rank: 6

    积分
    453
    发表于 2017-11-13 17:02:53 | 显示全部楼层 |阅读模式
    50视觉币
    本帖最后由 起司猫 于 2017-11-13 17:15 编辑

    前提:已经创建好模板所以要读去模板轮廓的最小外接矩形的坐标已经不用再读取一张图片
    然而神奇的事情就发生
    当不读取图片的时候,最小外接矩形的坐标读取显示为0,如图1 EDTJJ]`KK7E9%UZJ5@3D9HU.png
    但加入读取图片的算子,就可以读取到模板矩形的最小外接矩形的坐标,运行效果如图2
    @~[F0KXLO%]RNPO%@MZBYHI.png

    但觉的真的跟read_image这个算子无关啊~好迷,希望能有大神能够解答问题。
    附加调试代码,就注释掉read_image这个算子的结果就有不同。。。。。
    这个代码是win32控制台工程文件
    1. #include <stdio.h>
    2. #include "HalconCpp.h"
    3. #include <Windows.h>

    4. using namespace Halcon;
    5. #pragma comment(lib, "HalconCpp.lib")


    6. int main()
    7. {


    8.         Hobject  Image, ModelContours, ContoursAffinTrans;
    9.         Hobject         Region1, RegionUnion1;

    10.         // Local control variables
    11.         HTuple   ModelID,HomMat2D1;
    12.         HTuple   Row, Column, Tuple;
    13.         HTuple   Row1, Column1, Row2, Column2;

    14.         set_system("border_shape_models", "false");
    15.         read_image(&Image, "C:/Users/Administrator/Desktop/imgs/1.bmp");
    16.         read_shape_model("C:/Users/Administrator/Desktop/zhujian/1233.shm", &ModelID);
    17.         read_tuple("C:/Users/Administrator/Desktop/imgs/123.tup", &Tuple);
    18.         Row = Tuple[0];
    19.         Column = Tuple[1];

    20.         int X,Y;
    21.         X= Row[0].I();
    22.         Y=Column[0].I();
    23.         printf("模板中心点坐标为:(%d,%d)\n",X,Y);

    24.         //读取模板并把模板仿射变换到原来的位置
    25.         get_shape_model_contours(&ModelContours, ModelID, 1);
    26.         vector_angle_to_rigid(0, 0, 0, Row, Column, 0, &HomMat2D1);
    27.         affine_trans_contour_xld(ModelContours, &ContoursAffinTrans, HomMat2D1);

    28.         //获得模板的最小外接矩形
    29.         gen_region_contour_xld(ContoursAffinTrans, &Region1, "filled");
    30.         union1(Region1, &RegionUnion1);
    31.         smallest_rectangle1(RegionUnion1, &Row1, &Column1, &Row2, &Column2);


    32.         int y1 = Row1[0].I();
    33.         int x1 = Column1[0].I();
    34.         int y2 = Row2[0].I();
    35.         int x2 = Column2[0].I();
    36.         printf("外接矩形左上角的坐标为:(%d,%d)\n", x1, y1);
    37.         printf("外接矩形右下角的坐标为:(%d,%d)\n", x2, y2);


    38.         
    39.         clear_shape_model(ModelID);
    40.         return 0;
    41. }
    复制代码

    需要的效果就是注释掉read_image这个算子,然后能够运行出图2的结果。

    在halcon的代码:
    1. set_system ('border_shape_models', 'false')
    2. set_system('clip_region',false)
    3. * dev_set_part (0, 0, 1024, 1024)
    4. read_shape_model ('C:/Users/Administrator/Desktop/zhujian/1233.shm', ModelID)
    5. read_tuple ('C:/Users/Administrator/Desktop/imgs/123.tup', Tuple)
    6. Row :=Tuple[0]
    7. Column :=Tuple[1]

    8. *读取模板并把模板仿射变换到原来的位置
    9. get_shape_model_contours (ModelContours, ModelID, 1)
    10. vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D1)
    11. affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D1)
    12. *读取模板轮廓的坐标点
    13. rows :=[]
    14. cols :=[]
    15. count_obj (ContoursAffinTrans, Number)
    16. for I := 1 to Number by 1
    17.     select_obj (ContoursAffinTrans, ObjectSelected, I)
    18.     get_contour_xld (ObjectSelected, r, c)
    19.     rows:=[rows,r]
    20.     cols:=[cols,c]   
    21. endfor
    22. * gen_contour_region_xld (ContoursAffinTrans, Contours, 'border')


    23. stop ()

    24. numbers :=|rows|



    25. *获得模板的最小外接矩形
    26. gen_region_contour_xld (ContoursAffinTrans, Region, 'filled')
    27. union1 (Region, RegionUnion1)
    28. smallest_rectangle1 (RegionUnion1, Row1, Column1, Row2, Column2)
    29. gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
    30. dev_display (ContoursAffinTrans)
    31. dev_display (Rectangle)
    复制代码
    在halcon中不读取图片也是可以读到坐标的,然后有意思的是在halcon的路径中把halconcpp.dll删掉,同样读取不到坐标
    注:在vs配置是没有问题的

    Desktop.zip

    671.04 KB, 下载次数: 0, 下载积分: 金币 -2

    创建的模板和数据

    最佳答案

    查看完整内容

    halcon读取区域相关图形变量,如果没有图像作为底层载体,就会出现无法显示区域和轮廓的情况! 这个是halcon软件的问题,其实在halcon里面也是这样的。

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

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

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

    面向企业销售智能软件带相机和镜头,仅需3500,来电咨询 15019223858  18520862540
  • TA的每日心情
    振奋
    昨天 22:32
  • 签到天数: 536 天

    连续签到: 1 天

    [LV.9]以坛为家II

    347

    主题

    1289

    帖子

    6126

    积分

    Rank: 9

    积分
    6126

    突出贡献优秀版主荣誉管理论坛元老优质会员最佳新人

    发表于 2017-11-13 17:02:54 | 显示全部楼层
    halcon读取区域相关图形变量,如果没有图像作为底层载体,就会出现无法显示区域和轮廓的情况!
    这个是halcon软件的问题,其实在halcon里面也是这样的。
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    回复

    使用道具 举报

  • TA的每日心情
    害羞
    2018-7-13 11:23
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    5

    帖子

    453

    积分

    Rank: 6Rank: 6

    积分
    453
     楼主| 发表于 2017-11-13 17:18:02 | 显示全部楼层
    51Halcon 发表于 2017-11-13 17:06
    halcon读取区域相关图形变量,如果没有图像作为底层载体,就会出现无法显示区域和轮廓的情况!
    这个是halco ...

    在halcon是可以读到的,好神奇,如果把halcon路径中的halconcpp.dll才读不到轮廓的坐标值。
    在vs上的路径配置是没问题的

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

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

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

    回复

    使用道具 举报

  • TA的每日心情
    振奋
    昨天 22:32
  • 签到天数: 536 天

    连续签到: 1 天

    [LV.9]以坛为家II

    347

    主题

    1289

    帖子

    6126

    积分

    Rank: 9

    积分
    6126

    突出贡献优秀版主荣誉管理论坛元老优质会员最佳新人

    发表于 2017-11-13 17:31:07 | 显示全部楼层
    原因是没有设置内部图像处理的宽度和高度,导致图形没法正常初始化!
    1.如果你没有读取成功,这个时候显示了一张图片,再读取就可以读取成功了!
    2.如果你原来有图像,肯定可以直接成功,因为每次读取图像这个tsp_*的值会自动更改,设置比较大即可!

    游客,如果您要查看本帖隐藏内容请回复



    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    回复

    使用道具 举报

  • TA的每日心情
    害羞
    2018-8-21 08:38
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    70

    帖子

    823

    积分

    Rank: 3

    积分
    823
    发表于 2017-11-17 14:16:20 | 显示全部楼层
    :):):):):):):):):):)

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

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

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

    回复

    使用道具 举报

  • TA的每日心情
    点赞
    2019-1-9 08:05
  • 签到天数: 211 天

    连续签到: 2 天

    [LV.7]常住居民III

    3

    主题

    47

    帖子

    436

    积分

    Rank: 2Rank: 2

    积分
    436

    优质会员

    发表于 2018-3-30 16:41:42 | 显示全部楼层
    学习学习

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

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

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

    回复

    使用道具 举报

  • TA的每日心情
    害羞
    2018-12-10 16:12
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    24

    帖子

    89

    积分

    Rank: 6Rank: 6

    积分
    89
    发表于 2018-4-3 20:34:31 | 显示全部楼层
    学习了,很好的一个文章

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

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

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

    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    7

    帖子

    36

    积分

    Rank: 1

    积分
    36
    发表于 2018-5-5 07:50:28 | 显示全部楼层
    看看,正好碰到这种问题

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

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

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

    回复

    使用道具 举报

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

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识