halcon轮廓变region_halcon学习网

本文探讨了在Halcon中将XLD轮廓转换为Region后大小不一致的问题。通过读取图像,设置ROI,创建形状模型并进行轮廓转换,发现转换过程中可能存在的差异。示例代码展示了图像处理的各个步骤,包括图像读取、ROI定义、形状模型创建、轮廓匹配等,以帮助理解区域转换的过程。
摘要由CSDN通过智能技术生成

保存

为什么获取的XLD轮廓转为Region后,大小不一样了?

read_image (Image, 'C:/Users/THINK/Desktop/5站图片/1.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

*//set_system ('border_shape_models', 'false')

*//gen_rectangle1 (ROI_0, 1430.13, 1792.61, 1922.18, 2078.08)

*//gen_rectangle1 (ROI_0, 1332.74, 2135.5, 1932.21, 2485.9)

*//gen_rectangle1 (ROI_0, 1884.25, 1429.9, 2570.05, 2212.3)

*//gen_rectangle1 (ROI_0, 1730.79, 1756.3, 2416.59, 2538.7)

gen_rectangle1 (ROI_0, 992.233, 1737.1, 1884.25, 2519.5)

*//area_center(ROI_0, Area, Row, Column)

reduce_domain(Image, ROI_0, ImageReduced)

create_aniso_shape_model(ImageReduced, 'auto', -45, 45, 'auto', 0.9, 1.1, 'auto', 0.9, 1.1, 'auto', 'auto', 'use_polarity', 30, 10, ModelID)

*//create_shape_model(ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

*//create_shape_model(ImageReduced, 'auto', -45, 45, 0, 'auto', 'use_polarity', 30, 10, ModelID)

get_shape_model_contours(ModelContours, ModelID, 1)

*//get_region_points(SelectedContours, Row9, Column9)

*//inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 4, 30)

* Image Acquisition 01: Code generated by Image Acquisition 01

list_files ('C:/Users/THINK/Desktop/5站图片', ['files','follow_links'], ImageFiles)

tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles)

for Index := 0 to |ImageFiles| - 1 by 1

read_image (Image1, ImageFiles[Index])

gen_rectangle1 (ROI_1, 1304.93, 278.5, 2641.29, 1759.39)

*//gen_rectangle1 (ROI_1, 1222.43, 417.1, 2584.44, 3666.7)

*//area_center(ROI_1, Area1, Row1, Column1)

reduce_domain(Image1, ROI_1, ImageReduced1)

find_aniso_shape_model(ImageReduced1, ModelID, -45, 45, 0.9, 1.1, 0.9, 1.1, 0.5, 0, 0.5, 'least_squares', 0, 0.5, Row1_1, Column1_1, Angle1_1, ScaleR1_1, ScaleC1_1, Score1_1)

*//find_shape_model(ImageReduced1, ModelID, -45, 45, 0.5, 1, 0.5, 'least_squares', 0, 0.5, Row1_1, Column1_1, Angle1_1, Score1_1)

*//vector_angle_to_rigid(Row1, Column1, Angle, Row1, Column1, Angle, HomMat2D)

*//affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2D)

dev_display_shape_matching_results(ModelID, 'red', Row1_1, Column1_1, Angle1_1, 1, 1, 0)

gen_rectangle1 (ROI_2, 1253.65, 1602.86, 2506.37, 2661.35)

*//area_center(ROI_2, Area2, Row2, Column2)

reduce_domain(Image1, ROI_2, ImageReduced2)

find_aniso_shape_model(ImageReduced2, ModelID, -45, 45, 0.9, 1.1, 0.9, 1.1, 0.5, 0, 0.5, 'least_squares', 0, 0.5, Row2_2, Column2_2, Angle2_2, ScaleR2_2, ScaleC2_2, Score2_2)

dev_display_shape_matching_results(ModelID, 'red', Row2_2, Column2_2, Angle2_2, 1, 1, 0)

gen_rectangle1 (ROI_3, 1169.42, 2479.6, 2489.25, 3609.46)

*//area_center(ROI_3, Area3, Row3, Column3)

reduce_domain(Image1, ROI_3, ImageReduced3)

find_aniso_shape_model(ImageReduced3, ModelID, -45, 45, 0.9, 1.1, 0.9, 1.1, 0.5, 0, 0.5, 'least_squares', 0, 0.5, Row3_3, Column3_3, Angle3_3, ScaleR3_3, ScaleC3_3, Score3_3)

hom_mat2d_identity (HomMat2D)

*为一个同质二维变换矩阵添加一个缩放

hom_mat2d_scale(HomMat2D, 2, 2, Column3_3, Row3_3, HomMat2DScale)

*为一个同质二维变换矩阵添加一个缩放

hom_mat2d_rotate(HomMat2DScale, Angle3_3, Column3_3, Row3_3, HomMat2DRotate)

*依照角度旋转二维矩阵

hom_mat2d_translate(HomMat2DRotate, Column3_3, Row3_3, HomMat2DTranslate)

*为一个同质变换矩阵添加一个旋转

affine_trans_contour_xld(ModelContours, ContoursAffinTrans, HomMat2DTranslate)

*//union2_closed_contours_xld(ContoursAffinTrans, ContoursAffinTrans, ContoursUnion)

A

gen_region_contour_xld(UnionContours, Region, 'filled')

union1(Region, RegionUnion)

*//union1(Region, RegionUnion)

get_region_points(RegionUnion, Rows, Columns)

Rowss:=Rows+Row3_3

Columnss:=Columns+Column3_3

*//dev_display(ContoursAffinTrans)

*在当前窗口显示变换后的图形

dev_display_shape_matching_results(ModelID, 'red', Row3_3, Column3_3, Angle3_3, 1, 1, 0)

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

* Image Acquisition 01: Do something

endfor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值