红颜sad
VIP会员
VIP会员
  • 最后登录2014-05-14
  • 发帖数45
  • 金币891枚
  • 贡献勋章0枚
阅读:10887回复:63

halcon提取图片中的圆形中心

楼主#
更多 发布于:2013-08-17 15:14
read_image (Image, 'D:/桌面Halcon/bb.jpg')
get_image_pointer1 (Image, _, _, Width, Height)
access_channel (Image, Image1, 2)
rgb3_to_gray (Image1, Image1, Image1, ImageGray)
gray_closing_shape (ImageGray, ImageClosing, 11, 11, 'octagon')
gray_closing_shape (ImageGray, ImageClosing, 11, 11, 'octagon')
emphasize (ImageClosing, ImageEmphasize, 7, 7, 0.3)
access_channel (ImageEmphasize, Image2, 1)
rgb3_to_gray (ImageEmphasize, ImageEmphasize, ImageEmphasize, ImageGray1)
hysteresis_threshold (ImageGray1, RegionHysteresis, 30, 60, 10)


region_to_mean (RegionHysteresis, ImageGray1, ImageMean)
gray_closing_shape (ImageMean, ImageClosing1, 3, 3, 'rhombus')
binomial_filter (ImageClosing1, ImageBinomial, 3, 3)
gray_closing_rect (ImageBinomial, ImageClosing2, 2, 2)
erosion_circle (RegionHysteresis, RegionErosion, 0.5)


region_to_mean (RegionErosion, ImageClosing2, ImageMean1)
gray_closing_shape (ImageMean1, ImageClosing2, 3, 3, 'rhombus')
binomial_filter (ImageClosing2, ImageBinomia2, 3, 3)
gray_closing_rect (ImageBinomia2, ImageClosing3, 2, 2)
erosion_circle (RegionErosion, RegionErosion1, 0.5)


region_to_mean (RegionErosion1, ImageClosing3, ImageMean2)
gray_closing_shape (ImageMean2, ImageClosing3, 3, 3, 'rhombus')
binomial_filter (ImageClosing3, ImageBinomia3, 3, 3)
gray_closing_rect (ImageBinomia3, ImageClosing4, 2, 2)
erosion_circle (RegionErosion1, RegionErosion2, 0.5)


region_to_mean (RegionErosion2, ImageClosing4, ImageMean3)
bandpass_image (ImageMean3, ImageBandpass1, 'lines')


edges_sub_pix (ImageMean, Edges, 'lanser2', 1, 20, 40)
union_adjacent_contours_xld (Edges, UnionContours, 10, 1, 'attr_keep')
smooth_contours_xld (Edges, SmoothedContours, 5)
*segment_contours_xld (UnionContours, ContoursSplit, 'lines_circles', 6, 4, 4)
*将轮廓进行排序
sort_contours_xld (SmoothedContours, SortedContours, 'upper_right', 'true', 'row')
*得到轮廓的数量
count_obj (SortedContours, Number)
smallest_circle_xld (SortedContours, Row, Column, Radius)
dev_set_color ('green')
gen_empty_obj (Circles)
for I := 1 to Number by 1
  select_obj (ContoursSplit, Contour, I)
  get_contour_global_attrib_xld (Contour, 'cont_approx', Type)
  if (Type = 1)
        concat_obj (Circles, Contour, Circles)
  endif
endfor


fit_circle_contour_xld (Circles, 'atukey', -1, 2, 0, 3, 2, Row, Column, \
                        Radius, StartPhi, EndPhi, PointOrder)








这是一个比较综合的应用例子,提取圆形的妻子中心,来源于网友的贡献,这个例子是个很好的仿照例子,学习哈乐从的编写思想。再次感谢那些无私的网友
喜欢8

最新打赏:0人

刘天鸣
初学者
初学者
  • 最后登录2015-07-06
  • 发帖数9
  • 金币77枚
  • 贡献勋章0枚
沙发#
发布于:2013-08-18 11:25
看了你的程序,感觉有问题啊 结果是不对的没有完全提出来 而且感觉你写的太复杂了吧
红颜sad
VIP会员
VIP会员
  • 最后登录2014-05-14
  • 发帖数45
  • 金币891枚
  • 贡献勋章0枚
板凳#
发布于:2013-08-19 09:41
您多指教呀,把您的程序上传交流下呀
jon_liu
高级工程师
高级工程师
  • 最后登录2018-11-22
  • 发帖数192
  • 金币1386枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2013-08-23 20:35
有点复杂啊!!!!!!!!!!!!!!!!
天上星
助理工程师
助理工程师
  • 最后登录2014-09-18
  • 发帖数106
  • 金币372枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
4楼#
发布于:2013-09-18 15:35
是提取图片中圆的中心点坐标不?偶是初学者,误打误撞写了以下程序:
read_image (image1, 'D:/bb.jpg')
get_image_pointer1 (image1, Pointer, Type, Width, Height)
get_image_pointer3 (image1, PointerRed, PointerGreen, PointerBlue, Type1, Width1, Height1)
access_channel (image1, Image, 1)
access_channel (image1, Image2, 2)
access_channel (image1, Image3, 3)
add_image (Image2, Image3, ImageResult, 1, 0)
threshold (ImageResult, Region,0,180)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, Number1)
sort_region (ConnectedRegions, SortedRegions, 'upper_left', 'true', 'row')

 for Index := 1 to Number1 by 1
    select_obj(SortedRegions, ObjectSelected, Index)
  
    area_center (ConnectedRegions, Area1, Row1, Column1)
endfor
天上星
助理工程师
助理工程师
  • 最后登录2014-09-18
  • 发帖数106
  • 金币372枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2013-09-18 15:36
用的还是你这个图片,提取了13个圆区域的中心坐标 Row1, Column1
天上星
助理工程师
助理工程师
  • 最后登录2014-09-18
  • 发帖数106
  • 金币372枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2013-09-18 15:40
偶还不太明确三个通道,为啥用add_image (Image2, Image3, ImageResult, 1, 0),通道2和通道3相加就出来目标了,明白的给解释以下行不?
天上星
助理工程师
助理工程师
  • 最后登录2014-09-18
  • 发帖数106
  • 金币372枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2013-09-19 21:04
自己解答一下:因为这幅图像G、B分量背景相差不大,因此相减后基本背景就去掉了,只留下了目标。
aPP10
初学者
初学者
  • 最后登录2014-01-25
  • 发帖数10
  • 金币0枚
  • 贡献勋章0枚
8楼#
发布于:2014-01-25 06:54
很有用,mark,学习,占个楼赚金币,要看视频,不够金币
aPP10
初学者
初学者
  • 最后登录2014-01-25
  • 发帖数10
  • 金币0枚
  • 贡献勋章0枚
9楼#
发布于:2014-01-25 07:27
很有用,mark,学习,占个楼赚金币,要看视频,不够金币。
aPP10
初学者
初学者
  • 最后登录2014-01-25
  • 发帖数10
  • 金币0枚
  • 贡献勋章0枚
10楼#
发布于:2014-01-25 07:39
很有用,mark,学习,占个楼赚金币,要看视频,不够金币
aPP10
初学者
初学者
  • 最后登录2014-01-25
  • 发帖数10
  • 金币0枚
  • 贡献勋章0枚
11楼#
发布于:2014-01-25 07:44
很有用,mark,学习,占个楼赚金币,要看视频,不够金币。
laputa
初学者
初学者
  • 最后登录2014-09-19
  • 发帖数31
  • 金币44枚
  • 贡献勋章0枚
  • 社区居民
12楼#
发布于:2014-09-12 08:56
满80是了,哎,真不容易啊
terence
初学者
初学者
  • 最后登录2018-09-13
  • 发帖数64
  • 金币69枚
  • 贡献勋章0枚
13楼#
发布于:2014-09-13 17:44
很有用,mark,学习,很有用,mark,学习,很有用,mark,学习
visonzhang
初学者
初学者
  • 最后登录2018-10-12
  • 发帖数7
  • 金币40枚
  • 贡献勋章0枚
  • 社区居民
14楼#
发布于:2014-11-16 23:07
这个可以学习一下,拓宽点思路。
上一页
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服