<Halcon练习>Mark区域定位(直线拟合相交)

在这里插入图片描述

read_image (img, 'Location_1102.313_1350.506_0.bmp')
rgb1_to_gray (img, GrayImage)
get_image_size (GrayImage, Width, Height)
****选取中间十字区域****
gen_rectangle1 (TMP_Region, 673.583, 904.873, 1368.42, 1573.65)
reduce_domain (GrayImage, TMP_Region, ImageReduced)
binary_threshold (ImageReduced, Region, 'max_separability', 'light', UsedThreshold)
fill_up (Region, RegionFillUp2)


**********************水平区域****************************
opening_rectangle1 (RegionFillUp2, RegionOpening, 150, 1)
fill_up (RegionOpening, RegionFillUp)
shape_trans (RegionFillUp, RegionTrans1, 'convex')
gen_contour_region_xld (RegionTrans1, Contours, 'border')
segment_contours_xld (Contours, ContoursSplit, 'lines', 3, 5, 4)
***求最长两条xld***
length_xld (ContoursSplit, Length)
tuple_sort_index (Length, Indices)
tuple_select_range (Indices, |Indices|-2, |Indices|-1, Selected)
select_obj (ContoursSplit, ObjectSelected, Selected+1)
***直线拟合***
fit_line_contour_xld (ObjectSelected, 'gauss', -1, 2, 1, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)

**********************垂直区域****************************
opening_rectangle1 (Region, RegionOpening1, 1, 150)
fill_up (RegionOpening1, RegionFillUp1)
shape_trans (RegionFillUp1, RegionTrans, 'convex')
gen_contour_region_xld (RegionTrans, Contours1, 'border')
segment_contours_xld (Contours1, ContoursSplit1, 'lines_circles', 5, 4, 2)
length_xld (ContoursSplit1, Length1)
tuple_sort_index (Length1, Indices1)
tuple_select_range (Indices1, |Indices1|-2, |Indices1|-1, Selected1)
select_obj (ContoursSplit1, ObjectSelected1, Selected1+1)
fit_line_contour_xld (ObjectSelected1, 'tukey', -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1)

********************************求四条直线交点*******************************
dev_clear_window ()
dev_display (GrayImage)

******第一个点*******
intersection_lines (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin1[0], ColBegin1[0], RowEnd1[0], ColEnd1[0],Rows1,Cols1, IsOverlapping1)
gen_cross_contour_xld (Cross1, Rows1, Cols1, 6, 0)

******第二个点*******
intersection_lines (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin1[1], ColBegin1[1], RowEnd1[1], ColEnd1[1],Rows2,Cols2, IsOverlapping2)
gen_cross_contour_xld (Cross2, Rows2, Cols2, 6, 0)

******第三个点*******
intersection_lines (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin1[0], ColBegin1[0], RowEnd1[0], ColEnd1[0],Rows3,Cols3, IsOverlapping3)
gen_cross_contour_xld (Cross3, Rows3, Cols3, 6, 0)

******第四个点*******
intersection_lines (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin1[1], ColBegin1[1], RowEnd1[1], ColEnd1[1],Rows4,Cols4, IsOverlapping4)
gen_cross_contour_xld (Cross4, Rows4, Cols4, 6, 0)


******中心点******
r:=(Rows1+Rows2+Rows3+Rows4)/4.0
c:=(Cols1+Cols2+Cols3+Cols4)/4.0
gen_cross_contour_xld (Cross, r, c, 6, 0.785398)

在这里插入图片描述

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请将下面的halcon代码转写为python代码:<?xml version="1.0" encoding="UTF-8"?> <hdevelop file_version="1.2" halcon_version="20.11.0.0"> <procedure name="main"> <interface/> <body> <c as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[1,1]" as_ord="1">* Image Acquisition 01: Code generated by Image Acquisition 01</c> <l as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[1,2]" as_ord="1">list_files ('G:/Grasp-Dataset/brick-text', ['files','follow_links'], ImageFiles)</l> <l as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[1,3]" as_ord="1">tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)</l> <l as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[2,2]" as_ord="1">for Index := 0 to |ImageFiles| - 1 by 1</l> <l as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[2,3]" as_ord="1"> read_image (Image, ImageFiles[Index])</l> <c as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[2,4]" as_ord="1"> * Image Acquisition 01: Do something</c> <l> ImgPath:=ImageFiles[Index]</l> <c> * 分割文件名</c> <l> parse_filename(ImageFiles[Index], BaseName, Extension, Directory)</l> <l> minvalue:=20</l> <l> maxvalue:=60</l> <l> Amp:=minvalue+rand(1)*(maxvalue-minvalue)</l> <l> add_noise_white (Image, ImageNoise, Amp)</l> <l> write_image (ImageNoise, 'jpeg', 0, Directory+BaseName+'noise')</l> <c> </c> <l as_id="image_acquisition" as_name="Image Acquisition 01" as_grp="[3,1]" as_ord="1">endfor</l> </body> <docu id="main"> <parameters/> </docu> </procedure> </hdevelop>
最新发布
07-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值