halcon中不使用模板进行ROI跟随

如果不使用模板来进行ROI更随,该如何做到呢?

勇哥先把图片放上来:

image.png

我想所有人都会想到用形态学算法,阈值勾出电池本体,然后取得电池角度与位置信息,就可以ROI跟随了。

难点在哪里呢?

我们的目的是:“取电池几何中心的位置与电池的方向。”

那么电池的几何中心可以是电池整个外接最小矩形的中心,这个比较容易办到的。

但是方向呢?

我们可以取电矩形本体的外接矩形的角度做为方向,但是这一点因为极耳的干扰,我们取到本体的矩形并不容易做到。

也许有人认为取上图所示电池的顶边就可以确定方向了,但是客户的电池因为是软包的,你永远不要相信它的边会是规则的。靠它确定方向会非常不靠谱。

有一种办法是用电池本体矩形的中心到极耳那块的矩形区域的中心做为方向。

勇哥所指的两部分区域如下图所示。


image.png  image.png


最终的方向如下图:

image.png


有了中心x,y坐标与电池的方向信息,就可以进行ROI跟随了。

我们就实现了不用模板进行ROI跟随。


read_image (Image, 'C:/Users/hackpig/Desktop/8.bmp')
gen_rectangle1 (Rectangle1, 375.145, 102.852, 1725.71, 2209.26)

read_image (Image, 'C:/Users/hackpig/Desktop/8.bmp')

reduce_domain (Image, Rectangle1, Image)
set_draw (200000, 'margin') 
threshold (Image, Region, 0, 180)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999999)
dilation_circle (SelectedRegions, RegionDilation, 5)
fill_up (RegionDilation, RegionFillUp)

smallest_rectangle2 (RegionFillUp, Row3, Column3, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row3, Column3, Phi, Length1, Length2)
area_center (Rectangle, Area1, Row1, Column1)

difference (Rectangle, RegionFillUp, RegionDifference)
area_center (RegionDifference, Area, Row, Column)

angle_lx (Row1, Column1, Row, Column, Angle)
disp_arrow (200000, Row1, Column1, Row, Column, 5)
*stop()
wait_seconds (1)



--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864