设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

初学者求教:halcon代码测量图片工件的尺寸

[复制链接]
梦之殇依 发表于 2020-5-19 16:27:05 | 显示全部楼层 |阅读模式
百度了很久,还是不懂,有大佬帮我解释下么,创建模型的时候这些算子的参数数据怎么获得的。大体思路是?
  1. set_system ('border_shape_models', 'false')
  2. set_system ('int_zooming', 'true')
  3. set_system('clip_region','false')

  4. dev_close_window ()
  5. dev_update_off ()
  6. dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
  7. dev_set_draw ('margin')
  8. set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
  9. dev_set_line_width (2)
  10. dev_set_color ('green')

  11. AmplitudeThreshold := 12

  12.    
  13. * 创建模板
  14. if(false)
  15. //读取图片
  16.     read_image (Image, 'Model.bmp')
  17. //创建矩形模板
  18.     gen_rectangle2 (ModelRegion, 1046.55, 502.87, rad(10.9339), 178.542, 81.8375)
  19. //减少图片的范围
  20.     reduce_domain (Image, ModelRegion, TemplateImage)
  21. //创建一个匹配的模型
  22.     create_shape_model (TemplateImage, 5, rad(0), rad(360), rad(0.6245), ['none','no_pregeneration'], 'use_polarity', [15,30,50], 4, ModelID)
  23. //返回形状模型
  24.     get_shape_model_contours (ModelContours, ModelID, 1)
  25. //区域面积和中心
  26.     area_center (ModelRegion, ModelRegionArea, RefRow, RefColumn)
  27. //从点和角度计算刚性仿射变换。
  28.     vector_angle_to_rigid (0, 0, 0, RefRow, RefColumn, 0, HomMat2D)
  29. //对XLD轮廓应用任意仿射2D变换。
  30.     affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
  31. //在“图像”中找到形状模型的最佳匹配。
  32.     find_shape_model (Image, ModelID, rad(0), rad(360), 0.51, 1, 0.5, 'least_squares', [5,1], 0.75, ModelRow, ModelColumn, ModelAngle, Score)
  33. //将形状模型写入文件。
  34.     write_shape_model (ModelID, './ModelID')
  35. //显示
  36.     dev_display (Image)
  37.     dev_display (ModelRegion)
  38.     dev_display (TransContours)
  39.    
  40.     * Rectangle0
  41.     TmpCtrl_Row := 926
  42.     TmpCtrl_Column := 1074
  43.     TmpCtrl_Phi := -1.35726
  44.     TmpCtrl_Len1 := 100
  45.     TmpCtrl_Len2 := 10
  46. //创建一个任意方向的矩形。
  47.     gen_rectangle2 (Rectangle0, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  48. //将区域写入文件
  49.     write_region (Rectangle0, 'Rectangle0.hobj')
  50.     * Rectangle1
  51.     TmpCtrl_Row := 847.673
  52.     TmpCtrl_Column := 1425.64
  53.     TmpCtrl_Phi := -1.36127
  54.     TmpCtrl_Len1 := 70
  55.     TmpCtrl_Len2 := 10
  56.     gen_rectangle2 (Rectangle1_1, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  57.     write_region (Rectangle1_1, 'Rectangle1_1.hobj')
  58.    
  59.     TmpCtrl_Row := 1038
  60.     TmpCtrl_Column := 554
  61.     TmpCtrl_Phi := -1.36127
  62.     TmpCtrl_Len1 := 70
  63.     TmpCtrl_Len2 := 10
  64.     gen_rectangle2 (Rectangle1_2, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  65.     write_region (Rectangle1_2, 'Rectangle1_2.hobj')
  66.    
  67.     * Rectangle2
  68.     TmpCtrl_Row := 987.028
  69.     TmpCtrl_Column := 1061.99
  70.     TmpCtrl_Phi := 0.214
  71.     TmpCtrl_Len1 := 374
  72.     TmpCtrl_Len2 := 10
  73.     gen_rectangle2 (Rectangle2, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  74.     write_region (Rectangle2, 'Rectangle2.hobj')
  75.     * Rectangle3
  76.     TmpCtrl_Row := 874.972
  77.     TmpCtrl_Column := 1038.08
  78.     TmpCtrl_Phi := 0.214
  79.     TmpCtrl_Len1 := 374
  80.     TmpCtrl_Len2 := 10
  81.     gen_rectangle2 (Rectangle3, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  82.     write_region (Rectangle3, 'Rectangle3.hobj')
  83.     * Rectangle4
  84.     TmpCtrl_Row := 959.71
  85.     TmpCtrl_Column := 918.038
  86.     TmpCtrl_Phi := 0.217258
  87.     TmpCtrl_Len1 := 616.136
  88.     TmpCtrl_Len2 := 10
  89.     gen_rectangle2 (Rectangle4, TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2)
  90.     write_region (Rectangle4, 'Rectangle4.hobj')
  91.    
  92.     * Rectangle5 检测区域
  93.     gen_rectangle2 (Rectangle5_1, 994.108, 760.656, 1.78017, 75, 38)
  94.     gen_rectangle2 (Rectangle5_2, 963.114, 904.277, 1.78017, 75, 38)
  95.     write_region (Rectangle5_1, 'Rectangle5_1.hobj')
  96.     write_region (Rectangle5_2, 'Rectangle5_2.hobj')

  97.     stop ()
  98. endif
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2020-5-19 16:54:40 | 显示全部楼层
要学习下模板相关参数的原理,才可以更好的设置这些参数!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 梦之殇依 发表于 2020-5-19 17:49:22 | 显示全部楼层
Criss 发表于 2020-5-19 16:54
要学习下模板相关参数的原理,才可以更好的设置这些参数!

谢谢鸟叔,那我就查阅下相关的资料,有一定理解再来询问
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 梦之殇依 发表于 2020-5-19 18:04:26 | 显示全部楼层
Criss 发表于 2020-5-19 16:54
要学习下模板相关参数的原理,才可以更好的设置这些参数!

我现在遇到这样的问题,halcon测量数据然后转C#,我一直在调试修改,最后可以完整运行。可是最后却出现这个问题:
1,HALCON错误#2453:HALCON句柄在操作符转换坐标窗口到图像为空,请问大致是何处(我理解的是:测量时编程Halcon窗口对应的坐标轴那个窗口句柄,是这样理解么)
2,还有最近遇到一个联合编程问题:“System.BadImageFormatException”类型的未经处理的异常在 halcondotnet.dll 中发生


其他信息: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)


解决方案倒是有一个:把解决方案平台改成x64,而不是之前的any cpu。请问有一劳永逸的办法么,我在一个平台软件源码不会出现这个问题,可是单独实现功能却出问题了。




HALCON错误#2453:HALCON句柄在操作符转换坐标窗口到图像为空

HALCON错误#2453:HALCON句柄在操作符转换坐标窗口到图像为空
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
hao136 发表于 2023-10-26 10:39:26 | 显示全部楼层
Criss 发表于 2020-5-19 16:54
要学习下模板相关参数的原理,才可以更好的设置这些参数!

鸟叔,新人求教,相机拍照同一物体时倾斜拍照和水平拍照,测量出来的尺寸是一样的吗?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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