设为首页收藏本站
授权版本:2024_07
开启左侧

求工件角度测量

[复制链接]
hkchoose 发表于 2023-11-15 13:56:12 | 显示全部楼层 |阅读模式
悬赏30视觉币
最近在学习Halcon,刚入门就被布置了一道题,目前尝试的效果都不佳,求助各位大佬。

图片中的缺陷点可能在任意一个槽位,也可能是没有缺陷点。需要获取获得他的角度。

图片中的外围,会有两个比较大的凹槽,要获取凹槽的角度。

请大佬提供一下halcon代码以便观摩学习~~

样图

样图

作业要求

作业要求


原图在这:
链接:https://pan.baidu.com/s/1TVujZv3NNIgehIB5jvb-xQ?pwd=703e
提取码:703e


最佳答案

查看完整内容

大概思路就是匹配,找缺口。具体你自己的需求改改吧
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-11-15 13:56:13 | 显示全部楼层
  1. dev_update_off ()
  2. dev_set_draw ('margin')
  3. *********创建模型
  4. read_image (Image1, '样图/样图1.png')
  5. rgb1_to_gray (Image1, GrayImage)
  6. gen_rectangle2 (ROI_0, 814.065, 821.02, rad(-137.533), 98.785, 44.7842)
  7. gen_rectangle2 (TMP_Region, 914.109, 415.563, rad(-18.6304), 98.5895, 34.9364)
  8. union2 (ROI_0, TMP_Region, ROI_0)
  9. gen_rectangle2 (TMP_Region, 619.533, 122.214, rad(-77.7279), 96.6962, 43.2099)
  10. union2 (ROI_0, TMP_Region, ROI_0)
  11. gen_rectangle2 (TMP_Region, 400.917, 931.26, rad(-74.4134), 90.4003, 44.3046)
  12. union2 (ROI_0, TMP_Region, ROI_0)
  13. gen_rectangle2 (TMP_Region, 93.3728, 630.437, rad(-13.9223), 92.4009, 57.9936)
  14. union2 (ROI_0, TMP_Region, ROI_0)
  15. gen_rectangle2 (TMP_Region, 210.092, 224.98, rad(-132.952), 98.7181, 61.3814)
  16. union2 (ROI_0, TMP_Region, ROI_0)
  17. reduce_domain (GrayImage, ROI_0, ImageReduced1)
  18. threshold (ImageReduced1, Regions, 0, 59)
  19. connection (Regions, ConnectedRegions1)
  20. select_shape (ConnectedRegions1, SelectedRegions1, 'circularity', 'and', 0.8, 1)
  21. select_shape (SelectedRegions1, SelectedRegions2, 'area', 'and', 150, 99999)
  22. union1 (SelectedRegions2, RegionUnion)
  23. fill_up (RegionUnion, RegionFillUp1)
  24. gen_contour_region_xld (RegionFillUp1, Contours, 'border')
  25. fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
  26. gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)
  27. create_shape_model_xld (ContCircle, 'auto', rad(-180), rad(360), 'auto', 'auto', 'ignore_local_polarity', 5, ModelID)
  28. find_shape_model (GrayImage, ModelID,  rad(-180), rad(360), 0.5, 1, 0.5, 'least_squares', 4, 0.9, Row1, Column1, Angle, Score)
  29. dev_display_shape_matching_results2 (Contours1, ModelID, 'red', Row1, Column1, Angle, 1, 1, 0)
  30. gen_cross_contour_xld (Cross, Row1, Column1, 61, Angle)
  31. tempR:=Row1
  32. tempC:=Column1
  33. tempA:=0
  34. ***ROI区域
  35. gen_rectangle2 (ROI_0, 406.763, 121.67, rad(167.375), 30.286, 28.6463)
  36. gen_rectangle2 (TMP_Region, 628.147, 937.098, rad(-18.8067), 37.392, 31.8959)
  37. union2 (ROI_0, TMP_Region, ROI_0)
  38. gen_rectangle2 (TMP_Region, 206.094, 830.455, rad(39.1622), 38.7268, 34.8598)
  39. union2 (ROI_0, TMP_Region, ROI_0)
  40. gen_rectangle2 (TMP_Region, 810.692, 230.914, rad(-135.13), 34.8662, 31.1556)
  41. union2 (ROI_0, TMP_Region, ROI_0)
  42. gen_rectangle2 (TMP_Region, 914.263, 636.677, rad(-75.4668), 41.4606, 24.0005)
  43. union2 (ROI_0, TMP_Region, ROI_0)
  44. gen_rectangle2 (TMP_Region, 106.406, 419.49, rad(104.533), 41.4606, 28.6706)
  45. union2 (ROI_0, TMP_Region, ROI_0)
  46. ROI:=ROI_0

  47. **读取视频
  48. open_framegrabber ('DirectFile', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', '样图/考试测试图(无损压缩).avi', 'default', -1, -1, AcqHandle)
  49. get_framegrabber_param (AcqHandle, 'last_frame', Value )
  50. set_framegrabber_param (AcqHandle, 'grab_timeout', 100)

  51. grab_image_start (AcqHandle, -1)
  52. for Index := 0 to Value-1 by 1
  53.     try
  54.         grab_image (Image, AcqHandle )
  55.         rgb1_to_gray (Image, GrayImage)
  56.         find_shape_model (GrayImage, ModelID,  rad(-180), rad(360), 0.5, 1, 0.5, 'least_squares', 4, 0.9, Row1, Column1, Angle, Score)
  57. *         dev_display_shape_matching_results2 (Contours , ModelID, 'red', Row1, Column1, Angle , 1, 1, 0)
  58.         vector_angle_to_rigid (tempR, tempC, 0, Row1, Column1, Angle , HomMat2D)
  59.         affine_trans_region (ROI, ROIAffineTrans, HomMat2D, 'nearest_neighbor')
  60.         gen_empty_obj (EmptyObject)
  61.         connection (ROIAffineTrans, ConnectedRegions3)
  62.         count_obj (ConnectedRegions3, Number)
  63.         for Index1 := 1 to Number by 1
  64.             select_obj (ConnectedRegions3, ObjectSelected, Index1)
  65.             reduce_domain (GrayImage, ObjectSelected, ImageReduced)
  66.             binary_threshold (ImageReduced, Region1, 'max_separability', 'dark', UsedThreshold1)
  67.             concat_obj (EmptyObject, Region1, EmptyObject)
  68.         endfor
  69.         closing_circle (EmptyObject, RegionClosing, 3.5)
  70.         connection (RegionClosing, ConnectedRegions)
  71.         closing_circle (ConnectedRegions, RegionClosing1, 53.5)
  72.         difference ( RegionClosing1,ConnectedRegions, RegionDifference)
  73.         connection (RegionDifference, ConnectedRegions2)
  74.         select_shape (ConnectedRegions2, SelectedRegions, 'area', 'and', 150, 99999)
  75.         area_center (SelectedRegions, Area, Row2, Column2)
  76.         maxDistance:=0
  77.         maxfirst:=0
  78.         maxsecond:=0
  79.         for first := 0 to |Row2|-1 by 1
  80.             for second := 0 to |Row2|-1 by 1
  81.                 distance_pp (Row2[first], Column2[first], Row2[second], Column2[second], Distance)
  82.                 if (maxDistance<Distance)
  83.                     maxDistance:=Distance
  84.                     maxfirst:=first
  85.                     maxsecond:=second
  86.                 endif
  87.                 if (maxDistance>Distance)               
  88.                 endif
  89.             endfor
  90.         endfor
  91.         row:=[Row2[maxfirst],Row2[maxsecond]]
  92.         col:=[Column2[maxfirst],Column2[maxsecond]]
  93.         gen_contour_polygon_xld (Contour,row, col)
  94.         dev_display (Image)
  95.         dev_set_color ('green')
  96.         dev_display (Contour)
  97.     catch (Exception)
  98. continue
  99.     endtry
  100. endfor
  101. close_framegrabber (AcqHandle)








复制代码
大概思路就是匹配,找缺口。具体你自己的需求改改吧
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

Ggg3434 发表于 2023-11-15 15:30:05 | 显示全部楼层
这实验样图是你自己拍的还是给定的就是这样的?   图片原图有点差
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

wjszhuyi 发表于 2023-11-15 16:02:53 | 显示全部楼层
原图看起来效果不行,请重新拍照
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

老老常 发表于 2023-11-16 10:34:07 | 显示全部楼层
勉强能做出来,但是效果不太好
捕获.JPG
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

sjini 发表于 2023-12-4 14:20:48 | 显示全部楼层
学习学习
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

wjjun 发表于 2024-4-10 08:41:40 | 显示全部楼层
学习学习
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
回复

使用道具 举报

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

本版积分规则

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