文章目录
-
此示例程序显示了从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|,

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

被折叠的 条评论
为什么被折叠?



