halcon 文件xld函数详细介绍
Xld在halcon非常常用,特别是在几何测量时,最终都会将XLD类型的轮廓进行转换成标准的几何图形,再进行几何测量。
XLD第一次接触可以不太理解,我们可以理解为精度更高的像素。
对应三个英文单词为extended line description翻译过来就是扩展的线性描述。
Halcon提供对XLD变量存储函数有
write_contour_xld_arc_info
read_contour_xld_arc_info
write_contour_xld_dxf
read_contour_xld_dxf
write_polygon_xld_arc_info
read_polygon_xld_arc_info
write_polygon_xld_dxf
read_polygon_xld_dxf
serialize_xld
deserialize_xld
二十九. serialize_xld(XLD : : : SerializedItemHandle)
串行化XLD对象
三十. deserialize_xld( : XLD : SerializedItemHandle : )
反串行化XLD对象
例程:
dev_close_window()
read_image(image,'fabrik')
edges_sub_pix(image,edges,'canny', 1, 20, 40)
serialize_xld (edges, SerializedItemHandle)
open_file('123.txt','output_binary',filehandle)
fwrite_serialized_item(filehandle, SerializedItemHandle)
close_file(filehandle)
open_file('123.txt','input_binary',filehandle)
fread_serialized_item(filehandle,SerializedItemHandle1)
deserialize_xld (XLD,SerializedItemHandle1 )
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
dev_display(XLD)
三十一. write_contour_xld_arc_info(Contours : : FileName : )
以ARC/INFO生成的格式,将XLD轮廓存到文件FileName ;
如果没指定绝对路径,输出文件在当前目录下创建。
轮廓必须事先用函数affine_trans_contour_xld转换到世界坐标系。
所需要的转换信息,可以通过 read_world_file.从 ARC/INFO文件读取
三十二. read_contour_xld_arc_info( : Contours : FileName : )
从ARC/INFO 文件中读取XLD轮廓
例程:
dev_close_window()
read_image(image,'fabrik')
edges_sub_pix(image,edges,'canny', 1, 20, 40)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate (HomMat2DIdentity, 100, 100,HomMat2DTranslate)
affine_trans_contour_xld (edges, ModelAffinTrans,HomMat2DTranslate)
write_contour_xld_arc_info (ModelAffinTrans, '123.gen')
read_contour_xld_arc_info (Contours, '123.gen')
dev_clear_window()
dev_display(Contours)
三十三. write_contour_xld_dxf(Contours : : FileName : )
将XLD轮廓写入到DXF文件中
几何轮廓,及其他用于定义轮廓的数据都被写入到文件中;
write_contour_xld_dxf根据DXF版本ac1009(AutoCAD版本12)进行写入文件操作。
每个轮廓存储为折线。
属性值存储为折线每个顶点的扩展数据。
全局属性值存储为折线扩展数据。
所有的属性名称也存储为折线扩展数据。
函数read_contour_xld_dxf可以结合XLD属性,读取XLD轮廓及其属性。
其他可以读取DXF文件的应用,仅导入轮廓几何信息,忽略了属性信息。
三十四. read_contour_xld_dxf( : Contours : FileName, GenParamNames, GenParamValues : DxfStatus)
read_contour_xld_dxf读取DXF文件的内容(ac1009 AutoCAD DXF,版本12)并将其转换为XLD轮廓的轮廓。
如果没有在FileName指定绝对路径,在当前工作目录搜索文件。
输出参数dxfstatus包有含轮廓数量。
如果有需要,会提示DXF文件的部分无法解释。
read_contour_xld_dxf支持以下图形实体:
· POLYLINE
· 由线段组成的2维曲线(或闭合)
· LWPOLYLINE
· LINE
· POINT
· CIRCLE
· ARC
· ELLIPSE
· SPLINE
· BLOCK
· INSERT
DXF实体的X和Y坐标存储在,分别对应于XLD轮廓列行坐标上。DXF的实体的Z坐标被忽略。
如果文件由write_contour_xld_dxf创建,用于定义XLD轮廓的所有属性和全局属性,都会被读取。
这意味着,read_contour_xld_dxf支持所有write_contour_xld_dxf保存的扩展数据。
这些属性,通过设置函数参数 'read_attributes' 为 'false'.,可以关闭读取
函数参数名称(S)在genparamnames和对应值(S)在GenParamValues。
DXF文件的实体圆、弧、椭圆、样条由XLD轮廓拟合。
拟合的精度可以通过设置参数值min_num_points和max_approx_error”来控制。
参数“min_num_points”定义采样点,用于近似的最小数量。
注意参数的min_num_points总是指圆或椭圆,圆弧或椭圆弧,
如果min_num_points”设置为50,弧类型的DXF实体代表一个半圈,这半圈是由至少25个采样点来拟合。
参数“max_approx_error”定义了与理想的圆形或椭圆形相比,XLD轮廓偏差的最大值,分别为(单位:像素)。
为了提高拟合的准确性,这两个标准都被评估。
然后,使用更精确的拟合。
例程:
dev_close_window()
read_image(image,'fabrik')
edges_sub_pix(image,edges,'canny', 1, 20, 40)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
write_contour_xld_dxf (edges, '123.dxf')
read_contour_xld_dxf (Contours1, '123.dxf', [], [],DxfStatus)
dev_clear_window()
dev_display(Contours1)
三十五. write_polygon_xld_arc_info(Polygons : : FileName : )
将XLD多边形以ARC/INFO 格式保存到文件
多边形必须事先用affine_trans_polygon_xld转换到世界坐标系。
必要的转变参数,可以用read_world_file从ARC/INFO文件读取
可能参数Polygons中不含有多边形,无法以ARC/INFO格式保存到文件。
read_polygon_xld_arc_info读取时,就读取不到多边形,函数例如split_contours_xld 访问读取的轮廓就会失败;
例程: dev_close_window()
read_image(image,'fabrik')
edges_sub_pix(image,edges,'canny',1, 20, 40)
dev_open_window(0,0, 512, 512, 'black', WindowHandle)
gen_polygons_xld(edges,Polygons2,'ramer', 2)
write_polygon_xld_arc_info(Polygons2, '123.gen')
read_polygon_xld_arc_info(Polygons, '123.gen')
dev_clear_window()
dev_display(Polygons)
三十六. read_polygon_xld_dxf( : Polygons : FileName, GenParamNames, GenParamValues : DxfStatus)
从DXF文件读取XLD多边形;可参阅read_contour_xld_dxf
三十七. write_polygon_xld_dxf(Polygons : : FileName : )
将XLD多边形以DXF格式保存到文件
例程:
read_image (Image, 'mreut')
edges_sub_pix (Image, Edges, 'canny', 2, 20, 40)
regress_contours_xld (Edges, RegressContours, 'no', 1)
select_obj (RegressContours, ObjectSelected, 1)
query_contour_attribs_xld (ObjectSelected, Attribs)
query_contour_global_attribs_xld (ObjectSelected, GlobalAttribs)
write_contour_xld_dxf (RegressContours, 'contours')
read_contour_xld_dxf (ContoursRead, 'contours', [], [],DxfStatusCont)
select_obj (ContoursRead, ObjectSelected, 1)
query_contour_attribs_xld (ObjectSelected, AttribsTest)
query_contour_global_attribs_xld (ObjectSelected,GlobalAttribsTest)
gen_polygons_xld (ContoursRead, Polygons, 'ramer', 2)
write_polygon_xld_dxf (Polygons, 'polygons')
read_polygon_xld_dxf (PolygonsRead, 'polygons', [], [],DxfStatusPoly)
三十八。list_image_files( : : ImageDirectory, Extensions, Options : ImageFiles)
获取指定目录下,指定文件类型的全部文件
list_image_files ('.',[] ,[] , ImageFiles)for Index := 1 to |ImageFiles| by 1read_image (Image,ImageFiles[Index-1])endfor
上边为视频教程部分内容,
可以下载下面的视频教程学习。
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|