君若锦衣上舞
助理工程师
助理工程师
  • 最后登录2017-11-24
  • 发帖数96
  • 金币211枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:1172回复:20

找多个圆并求圆心间距离

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

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









第二回合:
谢谢下面的大神,但是现在有个新问题啊
标定之后转换坐标系 测量出来的长度应该是180、130、80.可是为什么最大会有2mm左右的误差
这个会有什么原因的影响
还有,只需要测量横纵两方向的距离就够了,其他的斜方向不用测的
[君若锦衣上舞于2017-01-12 16:49编辑了帖子]
mine_12
助理工程师
助理工程师
  • 最后登录2017-11-22
  • 发帖数31
  • 金币416枚
  • 贡献勋章0枚
  • 社区居民
沙发#
发布于:2017-01-12 08:52
感觉目前的打光方式只能让圆部分区域亮,这样的定位结果估计精度不高。在时间允许的话,可尝试光度立体的打光方式,将圆的边缘打亮,再定位圆会很容易,可参考例程read_braille_photometric_stereo
j04249
技术员
技术员
  • 最后登录2017-08-13
  • 发帖数27
  • 金币140枚
  • 贡献勋章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-11-17
  • 发帖数180
  • 金币1068枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 追星一族
地板#
发布于:2017-01-12 09:41
666666666666
qimingzinan
技术员
技术员
  • 最后登录2017-03-14
  • 发帖数38
  • 金币144枚
  • 贡献勋章0枚
4楼#
发布于:2017-01-12 09:47
检测的目的是测圆的位置有没有打磨对?那应该有个MARK之类的吧
Dath_li
高级工程师
高级工程师
  • 最后登录2017-07-04
  • 发帖数127
  • 金币1577枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2017-01-12 15:14
楼上的j04249
君若锦衣上舞
助理工程师
助理工程师
  • 最后登录2017-11-24
  • 发帖数96
  • 金币211枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2017-01-12 16:41
mine_12:感觉目前的打光方式只能让圆部分区域亮,这样的定位结果估计精度不高。在时间允许的话,可尝试光度立体的打光方式,将圆的边缘打亮,再定位圆会很容易,可参考例程read_braille_photometric_stereo回到原帖
真心感谢
fengxiaoyun987
专家
专家
  • 最后登录2017-11-23
  • 发帖数744
  • 金币2650枚
  • 贡献勋章0枚
  • 社区居民
  • 原创写手
7楼#
发布于:2017-01-13 09:05
板凳666666666666666666666666
林籁泉韵121
助理工程师
助理工程师
  • 最后登录2017-08-15
  • 发帖数129
  • 金币427枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
8楼#
发布于:2017-03-21 14:42
学习。。。。。。。。
huoxing_99
助理工程师
助理工程师
  • 最后登录2017-06-01
  • 发帖数85
  • 金币229枚
  • 贡献勋章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-05-19
  • 发帖数12
  • 金币63枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2017-04-13 10:38
学习学习。。。。。。。
likeplaycs
初学者
初学者
  • 最后登录2017-07-29
  • 发帖数20
  • 金币81枚
  • 贡献勋章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
  • 发帖数32
  • 金币69枚
  • 贡献勋章0枚
12楼#
发布于:2017-04-15 14:50
厉害了我的哥!!今天又学到了!!
nobuone
助理工程师
助理工程师
  • 最后登录2017-05-31
  • 发帖数54
  • 金币215枚
  • 贡献勋章0枚
  • 社区居民
13楼#
发布于:2017-05-11 15:54
围观解答,学习一下。。
wideplus
技术员
技术员
  • 最后登录2017-10-18
  • 发帖数64
  • 金币182枚
  • 贡献勋章0枚
  • 社区居民
14楼#
发布于:2017-05-16 15:27
围观解答,学习前进!
上一页
游客

返回顶部