君若锦衣上舞
初学者
初学者
  • 最后登录2017-04-21
  • 发帖数53
  • 金币67枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:469回复:12

找多个圆并求圆心间距离

楼主#
更多 发布于:2017-01-11 09:47
求求求,这样的图片只能这样的效果了,无法更改打光等方面
应该如何得到其中的各个圆
中间方形区域的小圆

得到圆的圆心,以及圆心之间的距离
差不多下图的意思









第二回合:
谢谢下面的大神,但是现在有个新问题啊
标定之后转换坐标系 测量出来的长度应该是180、130、80.可是为什么最大会有2mm左右的误差
这个会有什么原因的影响
还有,只需要测量横纵两方向的距离就够了,其他的斜方向不用测的
[君若锦衣上舞于2017-01-12 16:49编辑了帖子]
mine_12
助理工程师
助理工程师
  • 最后登录2017-04-19
  • 发帖数29
  • 金币366枚
  • 贡献勋章0枚
  • 社区居民
沙发#
发布于:2017-01-12 08:52
感觉目前的打光方式只能让圆部分区域亮,这样的定位结果估计精度不高。在时间允许的话,可尝试光度立体的打光方式,将圆的边缘打亮,再定位圆会很容易,可参考例程read_braille_photometric_stereo
j04249
技术员
技术员
  • 最后登录2017-04-13
  • 发帖数27
  • 金币134枚
  • 贡献勋章0枚
  • 社区居民
板凳#
发布于:2017-01-12 09:24

图片:1.png

效果图



dev_set_draw ('margin')
read_image (Image, 'F:/Study/Halcon例子/拟合圆/1.bmp')
*draw_rectangle1 (3600, Row1, Column1, Row2, Column2)
Row1:=80.108
Column1:=137.857
Row2:=1032.06
Column2:=1074.07
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)


reduce_domain (Image, Rectangle, ImageReduced)
threshold (ImageReduced, Regions, 39, 255)
fill_up (Regions, RegionFillUp)
connection (RegionFillUp, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 400.85, 884)
count_obj (SelectedRegions, Number)
for Index:=0 to Number/2-1 by 2
    select_obj (SelectedRegions, ObjectSelected, Index+1)
    area_center (ObjectSelected, Area, Row, Column)
    select_obj (SelectedRegions, ObjectSelected1, (Number-Index))
    area_center (ObjectSelected1, Area3, Row3, Column3)
    gen_rectangle1 (Rectangle1, Row, Column, Row3, Column3)
    smallest_circle (Rectangle1, Row4, Column4, Radius)
    gen_circle (Circle, Row4, Column4, Radius)
    disp_message (3600, Row3, 'window', Row4, Column4, 'green', 'true')
endfor
shangtuishao
工程师
工程师
  • 最后登录2017-04-19
  • 发帖数174
  • 金币956枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 追星一族
地板#
发布于:2017-01-12 09:41
666666666666
qimingzinan
技术员
技术员
  • 最后登录2017-03-14
  • 发帖数38
  • 金币144枚
  • 贡献勋章0枚
4楼#
发布于:2017-01-12 09:47
检测的目的是测圆的位置有没有打磨对?那应该有个MARK之类的吧
Dath_li
工程师
工程师
  • 最后登录2017-04-24
  • 发帖数112
  • 金币937枚
  • 贡献勋章0枚
  • 社区居民
5楼#
发布于:2017-01-12 15:14
楼上的j04249
君若锦衣上舞
初学者
初学者
  • 最后登录2017-04-21
  • 发帖数53
  • 金币67枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2017-01-12 16:41
mine_12:感觉目前的打光方式只能让圆部分区域亮,这样的定位结果估计精度不高。在时间允许的话,可尝试光度立体的打光方式,将圆的边缘打亮,再定位圆会很容易,可参考例程read_braille_photometric_stereo回到原帖
真心感谢
fengxiaoyun987
专家
专家
  • 最后登录2017-04-24
  • 发帖数641
  • 金币2197枚
  • 贡献勋章0枚
  • 社区居民
  • 原创写手
7楼#
发布于:2017-01-13 09:05
板凳666666666666666666666666
林籁泉韵121
助理工程师
助理工程师
  • 最后登录2017-04-24
  • 发帖数86
  • 金币305枚
  • 贡献勋章0枚
  • 忠实会员
8楼#
发布于:2017-03-21 14:42
学习。。。。。。。。
huoxing_99
技术员
技术员
  • 最后登录2017-04-19
  • 发帖数67
  • 金币175枚
  • 贡献勋章0枚
  • 社区居民
9楼#
发布于:2017-03-27 21:13
j04249:效果图



dev_set_draw ('margin')
read_image (Image, 'F:/Study/Halcon例子/拟合圆/1.bmp')
*draw_rectangle1 (3600, Row1, Col...
回到原帖
厉害了!。。。。。。。。。。。。。。。。。。
hyn123456
初学者
初学者
  • 最后登录2017-04-19
  • 发帖数11
  • 金币60枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2017-04-13 10:38
学习学习。。。。。。。
likeplaycs
初学者
初学者
  • 最后登录2017-04-15
  • 发帖数20
  • 金币74枚
  • 贡献勋章0枚
  • 社区居民
11楼#
发布于:2017-04-13 14:06
read_image (Image, './Image.bmp')
mean_image (Image, ImageMean, 70, 70)
dyn_threshold (Image, ImageMean, RegionDynThresh, 5.5, 'light')
opening_circle (RegionDynThresh, RegionOpening, 4)
connection (RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','roundness'], 'and', [500,0.92712], [1000,1])
dev_clear_window ()
dev_display (Image)
dev_display (SelectedRegions)
sort_region (SelectedRegions, SortedRegions1, 'character', 'true', 'row')
count_obj (SortedRegions1, Number)
for Index := 1 to Number by 2
    select_obj (SortedRegions1, ObjectSelectedLeft, Index)
    fill_up (ObjectSelectedLeft, RegionFillUp1)
    area_center (RegionFillUp1, Area1, LeftRow, LeftColumn)
    select_obj (SortedRegions1, ObjectSelectedRight, Index + 1)
    fill_up (ObjectSelectedRight, RegionFillUp2)
    area_center (RegionFillUp2, Area2, RightRow, RightColumn)
    gen_region_line (RegionLines, LeftRow, LeftColumn, RightRow, RightColumn)
    distance_pp (LeftRow, LeftColumn, RightRow, RightColumn, Distance)
    dev_clear_window ()
    dev_set_color('yellow')
    dev_set_draw ('margin')
    dev_set_line_width (1)
    dev_display (Image)
    dev_display (RegionLines)
    disp_message (3600, '距离为:' + Distance, 'window', 12, 500, 'black', 'true')
    wait_seconds (1)
endfor
for Index := 1 to Number/2 by 1
    select_obj (SortedRegions1, ObjectSelectedUp, Index)
    fill_up (ObjectSelectedUp, RegionFillUp1)
    area_center (RegionFillUp1, Area1, UpRow, UpColumn)
    if(Index%2 != 0)
        select_obj (SortedRegions1, ObjectSelectedDown, Number - Index)
        fill_up (ObjectSelectedDown, RegionFillUp2)
        area_center (RegionFillUp2, Area2, DownRow, DownColumn)
    else
        select_obj (SortedRegions1, ObjectSelectedDown, Number+2 - Index)
        fill_up (ObjectSelectedDown, RegionFillUp2)
        area_center (RegionFillUp2, Area2, DownRow, DownColumn)
    endif
    gen_region_line (RegionLines1, UpRow, UpColumn, DownRow, DownColumn)
    distance_pp (UpRow, UpColumn, DownRow, DownColumn, Distance1)
    dev_clear_window ()
    dev_set_color('yellow')
    dev_set_draw ('margin')
    dev_set_line_width (1)
    dev_display (Image)
    dev_display (RegionLines1)
    disp_message (3600, '距离为:' + Distance1, 'window', 12, 500, 'black', 'true')
    wait_seconds (1)
endfor
wd450412225
初学者
初学者
  • 最后登录2017-04-20
  • 发帖数33
  • 金币89枚
  • 贡献勋章0枚
12楼#
发布于:2017-04-15 14:50
厉害了我的哥!!今天又学到了!!
游客

返回顶部