【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】
一. 图像采集(Acquisition)
设备控制
open_framegrabber - 初始化采集设备
-
语法
open_framegrabber(Name, [通用参数], AcqHandle)
-
示例
open_framegrabber('GigEVision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', 'default', 0, -1, AcqHandle)
close_framegrabber - 释放设备资源
-
语法
close_framegrabber(AcqHandle)
图像获取
grab_image - 同步抓取单帧
-
语法
grab_image(Image, AcqHandle)
grab_image_async - 异步抓取单帧
-
语法
grab_image_async(Image, AcqHandle, MaxDelay)
-
示例
grab_image_async(Image, AcqHandle, 3.0) // 设置3秒超时
参数配置
set_framegrabber_param - 设置设备参数
-
常用参数
'exposure'
(曝光),'gain'
(增益),'trigger_mode'
(触发模式) -
示例
set_framegrabber_param(AcqHandle, 'exposure', 5000) // 设置5ms曝光
get_framegrabber_param - 查询设备参数
-
语法
get_framegrabber_param(AcqHandle, Param, Value)
高级功能
grab_data - 同步获取图像及附加数据
-
语法
grab_data(Image, Region, Contours, AcqHandle, Data)
info_framegrabber - 查询设备信息
-
语法
info_framegrabber(Name, Query, Information, ValueList)
二.图像处理
1. 图像预处理
mean_image - 均值滤波
-
语法
mean_image(Image, ImageMean, MaskWidth, MaskHeight)
-
示例
mean_image(Image, ImageMean, 5, 5) // 5x5均值滤波
gauss_image - 高斯滤波
-
语法
gauss_image(Image, ImageGauss, Size)
-
示例
gauss_image(Image, ImageGauss, 3) // 3x3高斯滤波
2. 图像分割
threshold - 全局阈值分割
-
语法
threshold(Image, Region, MinGray, MaxGray)
-
示例
threshold(Image, Region, 100, 255) // 提取100-255灰度区域
dyn_threshold - 动态阈值分割
-
语法
dyn_threshold(OrigImage, ThresholdImage, RegionDynThresh, Offset, LightDark)
-
示例
dyn_threshold(Image, ImageMean, Region, 10, 'dark') // 提取比背景暗10以上的区域
3. 特征提取
edges_image - 边缘检测
-
语法
edges_image(Image, ImaAmp, ImaDir, Filter, Alpha, NMS, Low, High)
-
示例
edges_image(Image, ImaAmp, ImaDir, 'canny', 1.0, 'nms', 20, 40) // Canny边缘检测
smallest_rectangle1 - 获取外接矩形
-
语法
smallest_rectangle1(Regions, Row1, Column1, Row2, Column2)
-
示例
smallest_rectangle1(Region, Row1, Col1, Row2, Col2) // 获取区域外接矩形坐标
4. 形态学处理
dilation_rect - 矩形膨胀
-
语法
dilation_rect(Region, RegionDilation, Width, Height)
-
示例
dilation_rect(Region, RegionDilation, 3, 3) // 3x3矩形膨胀
erosion_circle - 圆形腐蚀
-
语法
erosion_circle(Region, RegionErosion, Radius)
-
示例
erosion_circle(Region, RegionErosion, 2.5) // 半径2.5的圆形腐蚀
5. 模板匹配
create_shape_model - 创建形状模板
-
语法
create_shape_model(Template, NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Contrast, MinContrast, ModelID)
-
示例
create_shape_model(ImageReduced, 4, 0, rad(360), 'auto', 'none', 'use_polarity', 10, ModelID)
find_shape_model - 形状匹配
-
语法
find_shape_model(Image, ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, ResultRow, ResultColumn, ResultAngle, ResultScore)
-
示例
find_shape_model(Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, Row, Column, Angle, Score)
三.图像分割
threshold - 全局阈值分割
-
语法
threshold(Image : Region : MinGray, MaxGray : )
-
示例
threshold(Image, Region, 100, 255) // 提取灰度值100-255的区域
binary_threshold - 自动阈值分割
-
语法
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
-
示例
binary_threshold(Image, Region, 'max_separability', 'dark', Threshold) // 自动计算最佳阈值
dyn_threshold - 动态阈值分割
-
语法
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
-
示例
mean_image(Image, Mean, 31, 31) dyn_threshold(Image, Mean, Region, 10, 'dark') // 基于局部均值的动态阈值
watersheds - 分水岭分割
-
语法
watersheds(Image : Basins, Watersheds : : )
-
示例
watersheds(Image, Basins, Watersheds) // 分水岭算法分割图像
regiongrowing - 区域生长分割
-
语法
regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize : )
-
示例
regiongrowing(Image, Regions, 100, 100, 5, 100) // 从(100,100)开始生长,容差5,最小区域100像素
connection - 连通区域分析
-
语法
connection(Region : ConnectedRegions : : )
-
示例
connection(Region, ConnectedRegions) // 将输入区域分割为连通区域
select_shape - 形状筛选
-
语法
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
-
示例
select_shape(ConnectedRegions, LargeRegions, 'area', 'and', 500, 99999) // 筛选面积500以上的区域
四.特征提取
区域特征提取
area_center - 计算区域面积和中心坐标
-
语法
area_center(Regions : : Area, Row, Column)
-
示例
area_center(ConnectedRegions, Area, Row, Column) // 获取各连通区域的面积和中心
smallest_rectangle1 - 获取最小外接矩形
-
语法
smallest_rectangle1(Regions : : Row1, Column1, Row2, Column2)
-
示例
smallest_rectangle1(Region, Row1, Col1, Row2, Col2) // 获取区域的外接矩形坐标
smallest_rectangle2 - 获取带角度外接矩形
-
语法
smallest_rectangle2(Regions : : Row, Column, Phi, Length1, Length2)
-
示例
smallest_rectangle2(Region, Row, Col, Phi, L1, L2) // 获取带旋转角度的外接矩形参数
elliptic_axis - 计算椭圆参数
-
语法
elliptic_axis(Regions : : Ra, Rb, Phi)
-
示例
elliptic_axis(Region, MajorAxis, MinorAxis, Angle) // 获取拟合椭圆的参数
边缘特征提取
edges_sub_pix - 亚像素边缘检测
-
语法
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
-
示例
edges_sub_pix(Image, Edges, 'canny', 1.0, 20, 40) // Canny算子亚像素边缘检测
line_gauss - 亚像素直线检测
-
语法
line_gauss(Image : Lines : Sigma, Low, High, LightDark, Extend, Complete : )
-
示例
line_gauss(Image, Lines, 1.5, 5, 8, 'dark', 'true', 'true') // 高斯直线检测
circle_pose - 圆检测
-
语法
circle_pose(Image : : Radius, Percent, WindowSize, Threshold, MeasureSelect, MeasureTransition, MeasureSigma, MeasureLength, MeasureNumber, MeasureScore, MeasureDistance, MeasureInterpolation : Row, Column, Radius, StartPhi, EndPhi, PointOrder)
-
示例
circle_pose(Image, 50, 60, 10, 10, 'all', 'all', 1.0, 20, 5, 0.5, 3.0, 'bicubic', Row, Column, Radius, StartPhi, EndPhi, PointOrder) // 精确圆检测
灰度特征提取
gray_features - 灰度特征计算
-
语法
gray_features(Regions, Image : : Features : Value)
-
示例
gray_features(Region, Image, 'mean', MeanValue) // 计算区域平均灰度值
intensity - 灰度统计
-
语法
intensity(Regions, Image : : Mean, Deviation)
-
示例
intensity(Region, Image, Mean, Dev) // 计算区域灰度均值和标准差
纹理特征提取
texture_laws - 纹理滤波
-
语法
texture_laws(Image : ImageTexture : FilterTypes, Shift, FilterSize : )
-
示例
texture_laws(Image, Texture, 'el', 2, 5) // 使用Laws纹理滤波器
entropy_image - 熵图像计算
-
语法
entropy_image(Image : ImageEntropy : Width, Height : )
-
示例
entropy_image(Image, Entropy, 7, 7) // 计算7x7窗口的局部熵
五.模板匹配
1. 基于形状的模板匹配
create_shape_model - 创建形状模板
-
语法
create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Contrast, MinContrast : ModelID)
-
示例
create_shape_model(ImageReduced, 4, 0, rad(360), 'auto', 'none', 'use_polarity', 10, ModelID) // 创建360度可旋转模板
find_shape_model - 形状匹配
-
语法
find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)
-
示例
find_shape_model(Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, Row, Column, Angle, Score) // 搜索最佳匹配
2. 基于NCC的模板匹配
create_ncc_model - 创建NCC模板
-
语法
create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep : ModelID)
-
示例
create_ncc_model(ImageReduced, 4, 0, rad(360), 'auto', ModelID) // 创建归一化互相关模板
find_ncc_model - NCC匹配
-
语法
find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel : Row, Column, Angle, Score)
-
示例
find_ncc_model(Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'true', Row, Column, Angle, Score) // NCC匹配搜索
3. 基于组件的模板匹配
create_component_model - 创建组件模型
-
语法
create_component_model(Template : : RootRanking, ContrastLow, ContrastHigh, MinSize, MaxSize, AngleStart, AngleExtent, AngleStep, Optimization, Metric : ModelID)
-
示例
create_component_model(ImageReduced, 'area', 10, 30, 5, 1000, 0, rad(360), 'auto', 'none', 'use_polarity', ModelID)
find_component_model - 组件匹配
-
语法
find_component_model(Image : : ModelID, RootComponent, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, IfRootNotFound, IfComponentNotFound, PosePrediction, MinScoreComp, SubPixel, NumLevels : Row, Column, Angle, Score, ComponentFound)
-
示例
find_component_model(Image, ModelID, 0, 0, rad(360), 0.7, 1, 0.5, 'stop', 'prune_branch', 0, 0.5, 'least_squares', 0, Row, Column, Angle, Score, CompFound)
4. 3D模板匹配
create_surface_model - 创建3D表面模型
-
语法
create_surface_model(ObjectModel3D : : RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle : SurfaceModelID)
-
示例
create_surface_model(ObjectModel3D, 0.05, 0.2, 0.5, 'false', SurfaceModelID)
find_surface_model - 3D表面匹配
-
语法
find_surface_model(SurfaceModelID, ObjectModel3D, Pose, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID)
-
示例
find_surface_model(SurfaceModelID, SceneModel3D, [], 0.5, 'false', [], [], Pose, Score, ResultID)
5. 变形模板匹配
create_local_deformable_model - 创建可变形模板
-
语法
create_local_deformable_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue : ModelID)
-
示例
create_local_deformable_model(ImageReduced, 4, 0, rad(360), 'auto', 0.9, 1.1, 'auto', 'none', 'use_polarity', 10, [], [], ModelID)
find_local_deformable_model - 变形模板匹配
-
语法
find_local_deformable_model(Image : : ModelID, AngleStart, AngleExtent, ScaleMin, ScaleMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, ResultType, ParamName, ParamValue : Row, Column, Angle, Scale, Score, LocalDeformableModelResults)
-
示例
find_local_deformable_model(Image, ModelID, 0, rad(360), 0.9, 1.1, 0.7, 1, 0.5, 0, 0.8, 'deformed_contours', [], [], Row, Column, Angle, Scale, Score, Results)
六.测量技术
1. 一维测量
measure_pos - 边缘位置测量
-
语法
measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)
-
示例
measure_pos(Image, MeasureHandle, 1.0, 30, 'all', 'all', Rows, Cols, Amps, Dist) // 检测所有边缘
measure_pairs - 边缘对测量
-
语法
measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
-
示例
measure_pairs(Image, MeasureHandle, 1.0, 30, 'negative', 'all', R1, C1, A1, R2, C2, A2, IntraDist, InterDist) // 测量负向边缘对
2. 二维测量
smallest_rectangle2 - 最小外接矩形测量
-
语法
smallest_rectangle2(Regions : : Row, Column, Phi, Length1, Length2)
-
示例
smallest_rectangle2(Region, Row, Col, Angle, HalfLen1, HalfLen2) // 获取带角度矩形参数
elliptic_axis - 椭圆参数测量
-
语法
elliptic_axis(Regions : : Ra, Rb, Phi)
-
示例
elliptic_axis(Region, MajorAxis, MinorAxis, Angle) // 测量椭圆长/短轴和角度
3. 几何关系测量
distance_pp - 点对点距离
-
语法
distance_pp( : : Row1, Column1, Row2, Column2 : Distance)
-
示例
distance_pp(R1, C1, R2, C2, Dist) // 计算两点间距离
angle_ll - 线线夹角
-
语法
angle_ll( : : Row1, Column1, Row2, Column2, Row3, Column3, Row4, Column4 : Angle)
-
示例
angle_ll(R1, C1, R2, C2, R3, C3, R4, C4, Angle) // 计算两条线夹角
4. 亚像素测量
edges_sub_pix - 亚像素边缘检测
-
语法
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
-
示例
edges_sub_pix(Image, Edges, 'canny', 1.0, 20, 40) // Canny亚像素边缘
line_gauss - 亚像素直线测量
-
语法
line_gauss(Image : Lines : Sigma, Low, High, LightDark, Extend, Complete : )
-
示例
line_gauss(Image, Lines, 1.5, 5, 8, 'dark', 'true', 'true') // 高斯直线测量
5. 3D测量
xyz_to_object_model_3d - 3D点云生成
-
语法
xyz_to_object_model_3d(X, Y, Z : : ObjectModel3D)
-
示例
xyz_to_object_model_3d(X, Y, Z, ObjectModel3D) // 创建3D对象模型
fit_primitives_object_model_3d - 3D几何体拟合
-
语法
fit_primitives_object_model_3d(ObjectModel3D : : PrimitiveType, ParamName, ParamValue : ObjectModel3D)
-
示例
fit_primitives_object_model_3d(ObjectModel3D, 'plane', [], [], PlaneModel) // 平面拟合
七.3D视觉
1. 3D数据采集
read_object_model_3d - 读取3D模型文件
-
语法
read_object_model_3d( : : FileName, Scale, GenParamName, GenParamValue : ObjectModel3D, Status)
-
示例
read_object_model_3d('part.ply', 'm', [], [], ObjectModel3D, Status) // 读取PLY格式3D模型
connect_to_object_model_3d_device - 连接3D相机
-
语法
connect_to_object_model_3d_device( : : DeviceName, GenParamName, GenParamValue : AcqHandle)
-
示例
connect_to_object_model_3d_device('ensenso', [], [], AcqHandle) // 连接Ensenso相机
2. 3D数据处理
xyz_to_object_model_3d - 点云生成
-
语法
xyz_to_object_model_3d(X, Y, Z : : ObjectModel3D)
-
示例
xyz_to_object_model_3d(X, Y, Z, ObjectModel3D) // 从XYZ坐标创建3D模型
sample_object_model_3d - 点云采样
-
语法
sample_object_model_3d(ObjectModel3D : : Method, SampleDistance, GenParamName, GenParamValue : SampledObjectModel3D)
-
示例
sample_object_model_3d(ObjectModel3D, 'fast', 0.001, [], [], SampledModel) // 快速采样点云
3. 3D特征提取
surface_normals_object_model_3d - 表面法线计算
-
语法
surface_normals_object_model_3d(ObjectModel3D : : Method, GenParamName, GenParamValue : ObjectModel3DNormals)
-
示例
surface_normals_object_model_3d(ObjectModel3D, 'mls', [], [], NormalsModel) // MLS法线估计
find_surface_model - 3D表面匹配
-
语法
find_surface_model(SurfaceModelID, ObjectModel3D, Pose, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID)
-
示例
find_surface_model(SurfaceModelID, SceneModel, [], 0.7, 'false', [], [], Pose, Score, ResultID) // 3D表面匹配
4. 3D测量
fit_primitives_object_model_3d - 几何体拟合
-
语法
fit_primitives_object_model_3d(ObjectModel3D : : PrimitiveType, ParamName, ParamValue : ObjectModel3D)
-
示例
fit_primitives_object_model_3d(ObjectModel3D, 'plane', [], [], PlaneModel) // 平面拟合
distance_object_model_3d - 3D距离计算
-
语法
distance_object_model_3d(ObjectModel3DFrom, ObjectModel3DTo : : GenParamName, GenParamValue : Distance)
-
示例
distance_object_model_3d(PlaneModel, ObjectModel3D, [], [], Distances) // 计算到平面的距离
5. 3D重建
binocular_disparity - 双目视差计算
-
语法
binocular_disparity(ImageRect1, ImageRect2 : Disparity, Score : CamParamRect1, CamParamRect2, RelPoseRect, Method, MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, Filter, SubDistance : )
-
示例
binocular_disparity(Image1, Image2, Disparity, Score, CamParam1, CamParam2, RelPose, 'sgm', 11, 11, 0.001, -30, 30, 5, 0.5, 'none', 1) // SGM立体匹配
reconstruct_surface_stereo - 立体表面重建
-
语法
reconstruct_surface_stereo( : : Disparity, CameraSetupModelID, Method, GenParamName, GenParamValue : ObjectModel3D)
-
示例
reconstruct_surface_stereo(Disparity, CameraSetupID, 'point_cloud', [], [], ObjectModel3D) // 从视差图重建3D点云
八.条码与OCR
1. 条码识别
create_bar_code_model - 创建条码模型
-
语法
create_bar_code_model( : : GenParamName, GenParamValue : BarCodeHandle)
-
示例
create_bar_code_model([], [], BarCodeHandle) // 创建默认条码模型
find_bar_code - 查找并解码条码
-
语法
find_bar_code(Image : SymbolRegions : BarCodeHandle, CodeType : DecodedDataStrings)
-
示例
find_bar_code(Image, Region, BarCodeHandle, 'auto', Data) // 自动识别多种条码类型
get_bar_code_param - 获取条码参数
-
语法
get_bar_code_param(BarCodeHandle : : GenParamName : GenParamValue)
-
示例
get_bar_code_param(BarCodeHandle, 'check_char', CheckChar) // 获取校验字符设置
2. 二维码识别
create_data_code_2d_model - 创建二维码模型
-
语法
create_data_code_2d_model( : : SymbolType, GenParamName, GenParamValue : DataCodeHandle)
-
示例
create_data_code_2d_model('Data Matrix ECC 200', [], [], DataCodeHandle) // 创建Data Matrix模型
find_data_code_2d - 查找并解码二维码
-
语法
find_data_code_2d(Image : SymbolRegions : DataCodeHandle, SymbolType : ResultHandles, DecodedDataStrings)
-
示例
find_data_code_2d(Image, Region, DataCodeHandle, 'Data Matrix ECC 200', ResultHandle, Data) // 识别Data Matrix二维码
3. OCR识别
create_ocr_class_mlp - 创建OCR分类器
-
语法
create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed : OCRHandle)
-
示例
create_ocr_class_mlp(8, 10, 'constant', 'default', ['0','1','2','3','4','5','6','7','8','9'], 10, 'none', 10, 42, OCRHandle) // 创建数字OCR分类器
do_ocr_multi_class_mlp - 多字符OCR识别
-
语法
do_ocr_multi_class_mlp(CharacterRegions, Image : OCRHandle : Class, Confidence)
-
示例
do_ocr_multi_class_mlp(CharRegions, Image, OCRHandle, Class, Confidence) // 识别多个字符
find_text - 文本区域检测
-
语法
find_text(Image : : TextModel : TextResultID)
-
示例
find_text(Image, TextModel, ResultID) // 检测图像中的文本区域
4. 文本模型处理
create_text_model_reader - 创建文本阅读器模型
-
语法
create_text_model_reader( : : Mode, GenParamName, GenParamValue : TextModel)
-
示例
create_text_model_reader('auto', [], [], TextModel) // 创建自动文本阅读器
find_text_reader - 文本识别
-
语法
find_text_reader(Image : : TextModel : TextResultID)
-
示例
find_text_reader(Image, TextModel, ResultID) // 识别图像中的文本
get_text_result_reader - 获取识别结果
-
语法
get_text_result_reader( : : TextResultID, ResultName : ResultValue)
-
示例
get_text_result_reader(ResultID, 'word', Word) // 获取识别的单词文本
九.深度学习
1. 模型管理
read_dl_model - 读取预训练模型
-
语法
read_dl_model( : : FileName : DLModelHandle)
-
示例
read_dl_model('resnet50.hdl', DLModelHandle) // 读取ResNet50模型
create_dl_model_detection - 创建检测模型
-
语法
create_dl_model_detection( : : Backbone, NumClasses : DLModelHandle)
-
示例
create_dl_model_detection('pretrained_dl_classifier_compact.hdl', 10, DLModelHandle) // 创建10分类检测模型
2. 数据处理
gen_dl_samples_from_images - 生成样本
-
语法
gen_dl_samples_from_images(Images : : : DLSamples)
-
示例
gen_dl_samples_from_images(Images, DLSamples) // 从图像生成深度学习样本
preprocess_dl_samples - 样本预处理
-
语法
preprocess_dl_samples(DLSamples : : DLPreprocessParam : DLSamplesPreprocessed)
-
示例
preprocess_dl_samples(DLSamples, DLPreprocessParam, PreprocessedSamples) // 预处理样本
3. 模型训练
train_dl_model - 训练模型
-
语法
train_dl_model(DLDataset : : DLModelHandle, TrainParamName, TrainParamValue : DLModelHandle)
-
示例
train_dl_model(Dataset, DLModelHandle, ['epochs','batch_size'], [50,16], TrainedModel) // 训练50个epoch
evaluate_dl_model - 模型评估
-
语法
evaluate_dl_model(DLDataset : : DLModelHandle, EvaluationParamName, EvaluationParamValue : EvaluationResult)
-
示例
evaluate_dl_model(TestSet, DLModelHandle, ['measure'], ['precision'], Result) // 评估模型精度
4. 推理预测
apply_dl_model - 应用模型推理
-
语法
apply_dl_model(DLSamples : : DLModelHandle, Outputs : DLResult)
-
示例
apply_dl_model(Samples, DLModelHandle, ['classification'], Result) // 执行分类推理
get_dl_model_param - 获取模型参数
-
语法
get_dl_model_param(DLModelHandle : : ParamName : ParamValue)
-
示例
get_dl_model_param(DLModelHandle, 'class_names', ClassNames) // 获取类别名称
5. 结果处理
get_dl_sample_result - 获取样本结果
-
语法
get_dl_sample_result(DLSample : : Key : Result)
-
示例
get_dl_sample_result(Sample, 'classification_confidences', Confidences) // 获取分类置信度
visualize_dl_samples - 可视化结果
-
语法
visualize_dl_samples( : : DLSamples, DLModelHandle, WindowHandle, GenParamName, GenParamValue : )
-
示例
visualize_dl_samples(Samples, DLModelHandle, Window, ['display_labels'], ['true'], ) // 显示带标签的结果
十.图形显示核心算子介绍
dev_open_window - 打开图形窗口
-
语法
dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)
-
示例
-
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
-
功能说明
打开一个新的图形窗口,指定窗口位置(Row,Column)、大小(Width,Height)和背景色(Background),返回窗口句柄WindowHandle。
dev_display - 显示图像对象
-
语法
dev_display( : Object : : )
-
示例
-
read_image(Image, 'particle') ; dev_display(Image)
-
功能说明
在活动窗口中显示图像、区域或XLD等Halcon对象。
dev_set_color - 设置显示颜色
-
语法
dev_set_color( : : ColorName : )
-
示例
-
dev_set_color('red') ; dev_display(Region)
-
功能说明
设置后续图形显示的颜色,支持颜色名称如'red','green','blue'或RGB值如'#FF0000'。
disp_text - 显示文本
-
语法
disp_text( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : )
-
示例
disp_text(WindowHandle, '检测结果', 'window', 12, 12, 'black', 'true')
-
功能说明
在指定窗口显示文本,可设置位置、颜色和是否显示背景框。
disp_rectangle1 - 显示矩形
-
语法
disp_rectangle1( : : WindowHandle, Row1, Column1, Row2, Column2 : )
-
示例
disp_rectangle1(WindowHandle, 100, 100, 200, 200)
-
功能说明
通过对角坐标(Row1,Column1)和(Row2,Column2)显示矩形。
disp_region - 显示区域
-
语法
disp_region( : Region : WindowHandle : )
-
示例
threshold(Image, Region, 128, 255) dev_set_color('green') disp_region(Region, WindowHandle)
-
功能说明
在指定窗口中显示区域(Region)对象,显示颜色由dev_set_color设置。
十一.文件操作
read_image - 读取图像文件
-
语法
read_image( : Image : FileName : )
-
示例
read_image(Image, 'particle.png')
-
功能说明
从磁盘读取图像文件,支持多种格式如png、jpg、bmp、tiff等。
write_image - 保存图像文件
-
语法
write_image( : Image : Format, FillColor, FileName : )
-
示例
write_image(Image, 'png', 0, 'result.png')
-
功能说明
将图像保存到文件,需指定格式、填充色和文件名。
list_files - 列出目录文件
-
语法
list_files( : : Directory, Options : Files)
-
示例
list_files('images', 'files', ImageFiles)
-
功能说明
列出目录中的文件,Options可以是'files'、'directories'或'recursive'。
read_ocr_trainf - 读取OCR训练文件
-
语法
read_ocr_trainf( : : FileName : Character, Image)
-
示例
read_ocr_trainf('train.otf', Characters, Images)
-
功能说明
读取OCR训练文件,返回字符和对应图像。
write_ocr_trainf - 保存OCR训练数据
-
语法
write_ocr_trainf( : Character, Image : FileName : )
-
示例
write_ocr_trainf(Characters, Images, 'new_train.otf')
-
功能说明
将OCR训练数据保存到文件。
read_contour_xld_arc_info - 读取XLD轮廓文件
-
语法
read_contour_xld_arc_info( : : FileName : Contour)
-
示例
read_contour_xld_arc_info('contour.arc', Contours)
-
功能说明
读取XLD轮廓文件,返回轮廓对象。
write_contour_xld_arc_info - 保存XLD轮廓
-
语法
write_contour_xld_arc_info( : Contour : FileName : )
-
示例
write_contour_xld_arc_info(Contours, 'output.arc')
-
功能说明
将XLD轮廓保存到文件。
read_shape_model - 读取形状模板
-
语法
read_shape_model( : : FileName : ModelID)
-
示例
read_shape_model('model.shm', ModelID)
-
功能说明
从文件读取预训练的形状模板。
write_shape_model - 保存形状模板
-
语法
write_shape_model( : ModelID : FileName : )
-
示例
write_shape_model(ModelID, 'new_model.shm')
-
功能说明
将形状模板保存到文件。
file_exists - 检查文件是否存在
-
语法
file_exists( : : FileName : Exists)
-
示例
file_exists('data.txt', Exists)
-
功能说明
检查指定文件是否存在,返回布尔值。
delete_file - 删除文件
-
语法
delete_file( : : FileName : )
-
示例
delete_file('temp.dat')
-
功能说明
删除指定的文件。
十二.控制系统
程序流程控制
stop - 停止程序执行
-
语法
stop( : : : )
-
示例
if (ErrorCode != 0)stop() endif
-
功能说明
立即停止程序执行,常用于错误处理。
exit - 退出程序
-
语法
exit( : : : )
-
示例
if (NoMoreImages)exit() endif
-
功能说明
退出整个HDevelop程序。
continue - 继续循环
-
语法
continue( : : : )
-
示例
for i := 1 to 100 by 1if (i % 2 == 0)continue()endif* 处理奇数... endfor
-
功能说明
跳过当前循环的剩余部分,继续下一次循环。
break - 中断循环
-
语法
break( : : : )
-
示例
while (true)* 处理...if (TerminateCondition)break()endif endwhile
-
功能说明
立即退出当前循环结构。
错误处理
try / catch / endtry - 异常处理
-
语法
try* 可能出错的代码 catch (Exception)* 异常处理 endtry
-
示例
tryread_image(Image, 'nonexistent.jpg') catch (HException)dev_display(ErrorImage) endtry
-
功能说明
捕获并处理运行时异常,防止程序崩溃。
throw - 抛出异常
-
语法
throw( : : Exception : )
-
示例
if (Area < Threshold)throw('Area too small') endif
-
功能说明
主动抛出异常,可被catch捕获。
定时控制
count_seconds - 获取系统时间
-
语法
count_seconds( : : : Seconds)
-
示例
count_seconds(StartTime) * 执行操作... count_seconds(EndTime) Elapsed := EndTime - StartTime
-
功能说明
获取当前系统时间(秒),用于计时。
wait_seconds - 暂停执行
-
语法
wait_seconds( : : Seconds : )
-
示例
wait_seconds(0.5) * 暂停500毫秒
-
功能说明
使程序暂停指定秒数。
系统控制
set_system - 设置系统参数
-
语法
set_system( : : SystemParameter, Value : )
-
示例
set_system('clip_region', 'true') set_system('tsp_width', 2)
-
功能说明
配置Halcon全局系统参数。
get_system - 获取系统参数
-
语法
get_system( : : SystemParameter : Value)
-
示例
get_system('version', HalconVersion)
-
功能说明
查询Halcon系统参数值。
reset_obj_db - 重置对象数据库
-
语法
reset_obj_db( : : : )
-
示例
reset_obj_db()
-
功能说明
清除内存中的所有Halcon对象,释放内存。
十三.数学运算
基础算术运算
add - 加法运算
-
语法
add( : Image1, Image2 : ResultImage : Mult, Add : )
-
示例
add(Image1, Image2, ResultImage, 1, 0)
-
功能说明
对两幅图像进行像素级加法运算:ResultImage = Image1 × Mult + Image2 × Add
sub - 减法运算
-
语法
sub( : Image1, Image2 : ResultImage : Mult, Add : )
-
示例
sub(Image1, Image2, ResultImage, 1, 0)
-
功能说明
对两幅图像进行像素级减法运算:ResultImage = Image1 × Mult - Image2 × Add
mult - 乘法运算
-
语法
mult( : Image1, Image2 : ResultImage : Mult, Add : )
-
示例
mult(Image1, Image2, ResultImage, 1, 0)
-
功能说明
对两幅图像进行像素级乘法运算:ResultImage = Image1 × Image2 × Mult + Add
div - 除法运算
-
语法
div( : Image1, Image2 : ResultImage : Mult, Add : )
-
示例
div(Image1, Image2, ResultImage, 1, 0)
-
功能说明
对两幅图像进行像素级除法运算:ResultImage = Image1 / Image2 × Mult + Add
统计运算
min_max_gray - 灰度值极值统计
-
语法
min_max_gray( : Regions, Image : : Percent : Min, Max, Range)
-
示例
min_max_gray(Region, Image, 0, Min, Max, Range)
-
功能说明
计算区域内图像灰度值的最小值、最大值和范围
intensity - 区域灰度统计
-
语法
intensity( : Regions, Image : : Mean, Deviation)
-
示例
intensity(Region, Image, Mean, Deviation)
-
功能说明
计算区域内图像灰度值的均值和标准差
area_center - 区域面积和中心
-
语法
area_center( : Regions : : Area, Row, Column)
-
示例
area_center(Region, Area, Row, Column)
-
功能说明
计算区域的面积和中心坐标
几何变换
hom_mat2d_identity - 创建单位矩阵
-
语法
hom_mat2d_identity( : : : HomMat2DIdentity)
-
示例
hom_mat2d_identity(HomMat2D)
-
功能说明
创建一个2D单位齐次变换矩阵
hom_mat2d_rotate - 旋转矩阵
-
语法
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
-
示例
hom_mat2d_rotate(HomMat2D, rad(45), 100, 100, HomMat2DRotate)
-
功能说明
在现有变换矩阵上添加旋转变换
hom_mat2d_translate - 平移矩阵
-
语法
hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
-
示例
hom_mat2d_translate(HomMat2D, 50, 30, HomMat2DTranslate)
-
功能说明
在现有变换矩阵上添加平移变换
逻辑运算
union1 - 区域合并
-
语法
union1( : Regions : RegionUnion : )
-
示例
union1(RegionList, MergedRegion)
-
功能说明
将多个区域合并为一个区域
intersection - 区域交集
-
语法
intersection( : Region1, Region2 : RegionIntersection : )
-
示例
intersection(RegionA, RegionB, OverlapRegion)
-
功能说明
计算两个区域的交集区域
complement - 区域补集
-
语法
complement( : Region : RegionComplement : )
-
示例
complement(Region, BackgroundRegion)
-
功能说明
计算区域的补集(背景区域)
十四.系统操作核心算子介绍
系统信息与控制
get_system - 获取系统参数
-
语法
get_system( : : SystemParameter : Value)
-
示例
get_system('version', HalconVersion) get_system('processor_num', NumCores)
-
功能说明
查询Halcon系统参数,如版本号、处理器核心数等常用参数
set_system - 设置系统参数
-
语法
set_system( : : SystemParameter, Value : )
-
示例
set_system('tsp_width', 2) // 设置线宽 set_system('clip_region', 'true') // 启用区域裁剪
-
功能说明
配置Halcon全局运行参数,影响后续所有操作
内存管理
reset_obj_db - 重置对象数据库
-
语法
reset_obj_db( : : : )
-
示例
* 处理大量图像后... reset_obj_db() // 释放内存
-
功能说明
清除内存中所有Halcon对象,释放系统资源
clear_obj - 清除特定对象
-
语法
clear_obj( : Object : )
-
示例
clear_obj(LargeImage) // 释放单个图像内存
-
功能说明
删除指定的Halcon对象并释放其内存
并行计算控制
set_operator_timeout - 设置操作超时
-
语法
set_operator_timeout( : : Timeout : )
-
示例
set_operator_timeout(5000) // 设置5秒超时
-
功能说明
为耗时操作设置超时时间(毫秒)
get_operator_timeout - 获取当前超时设置
-
语法
get_operator_timeout( : : : Timeout)
-
示例
get_operator_timeout(CurrentTimeout)
-
功能说明
查询当前设置的超时时间
系统状态查询
count_relation - 统计对象数量
-
语法
count_relation( : Objects : : Number)
-
示例
count_relation(ImageArray, NumImages)
-
功能说明
统计Halcon元组或对象数组中的元素数量
get_handle_info - 获取句柄信息
-
语法
get_handle_info( : : Handle, InfoName : InfoValue)
-
示例
get_handle_info(WindowHandle, 'width', WindowWidth)
-
功能说明
查询各种Halcon句柄(窗口、线程等)的详细信息
多线程控制
par_start - 启动并行操作
-
语法
par_start( : : : ThreadID)
-
示例
par_start(ThreadID) * 在子线程中执行操作...
-
功能说明
创建新线程执行并行任务
par_join - 等待线程结束
-
语法
par_join( : : ThreadID : )
-
示例
par_join(ThreadID) // 等待指定线程完成
-
功能说明
阻塞当前线程直到指定线程执行完毕
15. 元组操作(Tuple)
-
基础操作
tuple_select
(索引访问) |tuple_concat
(连接) -
数学统计
tuple_mean
(平均值) |tuple_deviation
(标准差)
16. 对象操作(Object)
-
创建/复制
gen_empty_obj
(空对象) |copy_obj
(深拷贝) -
类型转换
region_to_bin
(区域转二值图) |image_to_channels
(通道分离)
17. 开发工具(Development)
-
调试工具
dev_set_check
(输入检查) |dev_error_var
(错误变量) -
代码导出
export_procedure
(导出为C++/C#)
18. 通信(Communication)
-
网络通信
open_socket
|send_data
(TCP/IP通信) -
串口通信
open_serial
|write_serial
(PLC控制)
19. 标定(Calibration)
-
相机标定
create_calib_data
|find_calib_object
(标定板识别)
calibrate_cameras
(内参计算) -
手眼标定
calibrate_hand_eye
(机械臂标定)