【dxf文件创建平面校准可变形模型】

该示例详细介绍了如何从DXF文件生成平面校准的可变形模型,并进行实例搜索与定位。首先,通过忽略局部极性的度量创建模型,然后在图像中找到模型实例,利用图像和轮廓位置获取极性信息,从而提升度量的区分性。最终,能够在新的搜索图像中精确地定位模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录


  • 此示例程序显示了从dxf文件创建平面校准可变形模型。

  • 首先,从dxf文件创建平面校准的可变形模型。dxf文件没有极性信息,因此使用“ignore_local_polarity”度量。

  • 请注意,必须在世界坐标中提供模型。

  • 然后,在搜索图像中找到该模型的实例。

  • 利用该图像和模型轮廓的相应位置,操作符set_planar_calib_deformable_model_metric提取缺失的极性信息。

  • 该极性信息允许使用比“忽略本地极性”更具区分性的度量“使用极性”。

  • 最后,在搜索图像中定位新模型。

  • 阅读金属零件的图像。

* 此示例程序显示了从dxf文件创建平面校准可变形模型。
* 首先,从dxf文件创建平面校准的可变形模型。dxf文件没有极性信息,因此使用“ignore_local_polarity”度量。
* 请注意,必须在世界坐标中提供模型。

* 然后,在搜索图像中找到该模型的实例。
* 利用该图像和模型轮廓的相应位置,操作符set_planar_calib_deformable_model_metric提取缺失的极性信息。
* 该极性信息允许使用比“忽略本地极性”更具区分性的度量“使用极性”。

* 最后,在搜索图像中定位新模型。
* 阅读金属零件的图像。

read_image (Image, 'metal-parts/bracket_tilted_01.png')
dev_update_off ()
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, 640, 480, WindowHandle)
set_display_font (WindowHandle, 18, 'mono', 'true', 'false')
dev_set_color ('lime green')
dev_set_line_width (1)
*为一个区域扫描相机生成一个相机参数元组,其失真由分割模型建模。
gen_cam_par_area_scan_division (0.0131933, -1039.78, 8.3e-006, 8.3e-006, 313.191, 253.978, 640, 480, CamParam)
*创建 3D 姿势
create_pose (0.0185843, -0.015084, 0.372976, 359.872, 0.989562, 359.381, 'Rp+T', 'gba', 'point', ReferencePose)
dev_display (Image)
dev_set_colored (3)
*显示三维坐标系的坐标轴
disp_3d_coord_system (WindowHandle, CamParam, ReferencePose, 0.05)
 
* 读取金属零件的dxf模型。请注意,原始dxf模型的缩放比例是一个像素一毫米。
* 操作符create _ planar _ calib _ deformable _ model _ xld假设在世界坐标中提供dxf模型,即一个像素对应一米。
* 因此,模型必须相应地缩放。
disp_message (WindowHandle, 'Prepare and create the Model', 'window', 12, 84, 'lime green', 'false')
get_system ('example_dir', HalconExamples)
read_contour_xld_dxf (Contours, HalconExamples + '/hdevelop/Applications/Object-Recognition-2D/metal-part-01.dxf', [], [], DxfStatus)
dev_set_color ('cyan')
dev_display (Contours)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_scale (HomMat2DIdentity, 0.001, 0.001, 0.5, 0.5, HomMat2DScale)
affine_trans_contour_xld (Contours, ContoursTrans, HomMat2DScale)
*3D姿势转换为齐次变换矩阵
pose_to_hom_mat3d (ReferencePose, HomMat3D)
gen_empty_obj (FoundContour)
count_obj (ContoursTrans, NumberContour)
for I := 1 to NumberContour by 1
    select_obj (ContoursTrans, ObjectSelected, I)
    *返回 XLD 等值线的坐标
    get_contour_xld (ObjectSelected, Y, X)
    Z := gen_tuple_const(|X|,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值