【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

news2025/5/24 13:31:39

介绍

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。

本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。

注意:

  • 跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。
  • 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

以下目录读者可根据目录进行查找想要了解或学习的算子:


目录

一. 图像采集(Acquisition)

设备控制

open_framegrabber - 初始化采集设备

close_framegrabber - 释放设备资源

图像获取

grab_image - 同步抓取单帧

grab_image_async - 异步抓取单帧

参数配置

set_framegrabber_param - 设置设备参数

get_framegrabber_param - 查询设备参数

高级功能

grab_data - 同步获取图像及附加数据

info_framegrabber - 查询设备信息

二.图像处理

1. 图像预处理

mean_image - 均值滤波

gauss_image - 高斯滤波

2. 图像分割

threshold - 全局阈值分割

dyn_threshold - 动态阈值分割

3. 特征提取

edges_image - 边缘检测

smallest_rectangle1 - 获取外接矩形

4. 形态学处理

dilation_rect - 矩形膨胀

erosion_circle - 圆形腐蚀

5. 模板匹配

create_shape_model - 创建形状模板

find_shape_model - 形状匹配

三.图像分割

threshold - 全局阈值分割

binary_threshold - 自动阈值分割

dyn_threshold - 动态阈值分割

watersheds - 分水岭分割

regiongrowing - 区域生长分割

connection - 连通区域分析

select_shape - 形状筛选

四.特征提取

区域特征提取

area_center - 计算区域面积和中心坐标

smallest_rectangle1 - 获取最小外接矩形

smallest_rectangle2 - 获取带角度外接矩形

elliptic_axis - 计算椭圆参数

边缘特征提取

edges_sub_pix - 亚像素边缘检测

line_gauss - 亚像素直线检测

circle_pose - 圆检测

灰度特征提取

gray_features - 灰度特征计算

intensity - 灰度统计

纹理特征提取

texture_laws - 纹理滤波

entropy_image - 熵图像计算

五.模板匹配

1. 基于形状的模板匹配

create_shape_model - 创建形状模板

find_shape_model - 形状匹配

2. 基于NCC的模板匹配

create_ncc_model - 创建NCC模板

find_ncc_model - NCC匹配

3. 基于组件的模板匹配

create_component_model - 创建组件模型

find_component_model - 组件匹配

4. 3D模板匹配

create_surface_model - 创建3D表面模型

find_surface_model - 3D表面匹配

5. 变形模板匹配

create_local_deformable_model - 创建可变形模板

find_local_deformable_model - 变形模板匹配

六.测量技术

1. 一维测量

measure_pos - 边缘位置测量

measure_pairs - 边缘对测量

2. 二维测量

smallest_rectangle2 - 最小外接矩形测量

elliptic_axis - 椭圆参数测量

3. 几何关系测量

distance_pp - 点对点距离

angle_ll - 线线夹角

4. 亚像素测量

edges_sub_pix - 亚像素边缘检测

line_gauss - 亚像素直线测量

5. 3D测量

xyz_to_object_model_3d - 3D点云生成

fit_primitives_object_model_3d - 3D几何体拟合

七.3D视觉

1. 3D数据采集

read_object_model_3d - 读取3D模型文件

connect_to_object_model_3d_device - 连接3D相机

2. 3D数据处理

xyz_to_object_model_3d - 点云生成

sample_object_model_3d - 点云采样

3. 3D特征提取

surface_normals_object_model_3d - 表面法线计算

find_surface_model - 3D表面匹配

4. 3D测量

fit_primitives_object_model_3d - 几何体拟合

distance_object_model_3d - 3D距离计算

5. 3D重建

binocular_disparity - 双目视差计算

reconstruct_surface_stereo - 立体表面重建

八.条码与OCR

1. 条码识别

create_bar_code_model - 创建条码模型

find_bar_code - 查找并解码条码

get_bar_code_param - 获取条码参数

2. 二维码识别

create_data_code_2d_model - 创建二维码模型

find_data_code_2d - 查找并解码二维码

3. OCR识别

create_ocr_class_mlp - 创建OCR分类器

do_ocr_multi_class_mlp - 多字符OCR识别

find_text - 文本区域检测

4. 文本模型处理

create_text_model_reader - 创建文本阅读器模型

find_text_reader - 文本识别

get_text_result_reader - 获取识别结果

九.深度学习

1. 模型管理

read_dl_model - 读取预训练模型

create_dl_model_detection - 创建检测模型

2. 数据处理

gen_dl_samples_from_images - 生成样本

preprocess_dl_samples - 样本预处理

3. 模型训练

train_dl_model - 训练模型

evaluate_dl_model - 模型评估

4. 推理预测

apply_dl_model - 应用模型推理

get_dl_model_param - 获取模型参数

5. 结果处理

get_dl_sample_result - 获取样本结果

visualize_dl_samples - 可视化结果

十.图形显示核心算子介绍

dev_open_window - 打开图形窗口

dev_display - 显示图像对象

dev_set_color - 设置显示颜色

disp_text - 显示文本

disp_rectangle1 - 显示矩形

disp_region - 显示区域

十一.文件操作

read_image - 读取图像文件

write_image - 保存图像文件

list_files - 列出目录文件

read_ocr_trainf - 读取OCR训练文件

write_ocr_trainf - 保存OCR训练数据

read_contour_xld_arc_info - 读取XLD轮廓文件

write_contour_xld_arc_info - 保存XLD轮廓

read_shape_model - 读取形状模板

write_shape_model - 保存形状模板

file_exists - 检查文件是否存在

delete_file - 删除文件

十二.控制系统

程序流程控制

stop - 停止程序执行

exit - 退出程序

continue - 继续循环

break - 中断循环

错误处理

try / catch / endtry - 异常处理

throw - 抛出异常

定时控制

count_seconds - 获取系统时间

wait_seconds - 暂停执行

系统控制

set_system - 设置系统参数

get_system - 获取系统参数

reset_obj_db - 重置对象数据库

十三.数学运算

基础算术运算

add - 加法运算

sub - 减法运算

mult - 乘法运算

div - 除法运算

统计运算

min_max_gray - 灰度值极值统计

intensity - 区域灰度统计

area_center - 区域面积和中心

几何变换

hom_mat2d_identity - 创建单位矩阵

hom_mat2d_rotate - 旋转矩阵

hom_mat2d_translate - 平移矩阵

逻辑运算

union1 - 区域合并

intersection - 区域交集

complement - 区域补集

十四.系统操作

系统信息与控制

get_system - 获取系统参数

set_system - 设置系统参数

内存管理

reset_obj_db - 重置对象数据库

clear_obj - 清除特定对象

并行计算控制

set_operator_timeout - 设置操作超时

get_operator_timeout - 获取当前超时设置

系统状态查询

count_relation - 统计对象数量

get_handle_info - 获取句柄信息

多线程控制

par_start - 启动并行操作

par_join - 等待线程结束

十五.元组操作

元组创建与初始化

tuple_gen_const - 生成常量元组

tuple_rand - 生成随机元组

元组基本操作

tuple_length - 获取元组长度

tuple_concat - 连接元组

元组元素访问

tuple_select - 选择元组元素

tuple_find - 查找元素位置

元组数学运算

tuple_add - 元组加法

tuple_mult - 元组乘法

元组逻辑运算

tuple_and - 逻辑与运算

tuple_not - 逻辑非运算

元组排序与统计

tuple_sort - 元组排序

tuple_max - 求最大值

元组类型转换

tuple_number - 转换为数字元组

tuple_string - 转换为字符串元组

十六.对象操作

对象创建与生成

gen_empty_obj - 创建空对象

gen_region_points - 从点生成区域

对象复制与转换

copy_obj - 复制对象

obj_to_integer - 对象转整数

对象连接与分离

concat_obj - 连接对象数组

select_obj - 选择对象元素

对象信息获取

count_obj - 统计对象数量

get_obj_class - 获取对象类型

对象比较与测试

test_equal_obj - 测试对象相等性

test_subset_region - 测试区域包含关系

对象几何变换

affine_trans_region - 仿射变换区域

zoom_region - 区域缩放

对象可视化

get_obj_info - 获取对象信息

十七.开发工具

程序调试与分析

dev_disp_text - 调试文本显示

dev_error_var - 获取错误变量

性能分析工具

count_seconds - 精确计时

profile_operations - 操作性能分析

代码生成工具

export_procedure - 导出过程

gen_cpp_code - 生成C++代码

交互式开发工具

inspect_shape_model - 形状模板检查

dev_inspect_ctrl - 控制变量检查

自动化测试工具

test_equal_obj - 对象相等性测试

assert - 断言检查

代码优化工具

optimize_direct - 直接优化模式

get_operator_precedence - 获取算子优先级

十八.通信算子分类

设备通信接口

open_framegrabber - 打开图像采集设备

close_framegrabber - 关闭采集设备

工业通信协议

opc_ua_read_node - OPC UA读取

modbus_read_holding_registers - Modbus读取

网络通信

socket_connect - 建立Socket连接

socket_send_data - Socket发送数据

串口通信

serial_open - 打开串口

serial_read_line - 读取串口数据

数据交换接口

set_window_param - 设置窗口参数

get_window_param - 获取窗口参数

工业相机控制

set_framegrabber_param - 设置采集参数

grab_image_async - 异步采集图像

十九.标定算子分类

相机标定

create_calib_data - 创建标定数据模型

set_calib_data_calib_object - 设置标定板参数

find_calib_object - 查找标定板

calibrate_cameras - 执行相机标定

手眼标定

create_hand_eye_calib_data - 创建手眼标定模型

set_hand_eye_calib_data - 设置标定数据

calibrate_hand_eye - 执行手眼标定

标定结果应用

get_calib_data - 获取标定结果

change_radial_distortion_image - 图像畸变校正

标定板生成

gen_caltab - 生成标定板描述文件

create_caltab - 创建标定板图像

实战案例

案例1:二维码识别

案例2:尺寸测量

实战应用流程经验分享

1. 标准检测流程

2. 高精度匹配流程

3. 深度学习流程

最佳实践建议

重要说明:


一. 图像采集(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 1
        if (i % 2 == 0)
            continue()
        endif
        * 处理奇数...
    endfor
    • 功能说明
      跳过当前循环的剩余部分,继续下一次循环。

    break - 中断循环

    • 语法
      break( : : : )

    • 示例

    while (true)
        * 处理...
        if (TerminateCondition)
            break()
        endif
    endwhile
    • 功能说明
      立即退出当前循环结构。

    错误处理

    try / catch / endtry - 异常处理

    • 语法

    try
        * 可能出错的代码
    catch (Exception)
        * 异常处理
    endtry
    • 示例

    try
        read_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) // 等待指定线程完成
    • 功能说明
      阻塞当前线程直到指定线程执行完毕


    十五.元组操作

    元组创建与初始化

    tuple_gen_const - 生成常量元组

    • 语法
      tuple_gen_const( : : Length, Const : Tuple)

    • 示例

    tuple_gen_const(5, 0, ZeroTuple)  // 创建[0,0,0,0,0]
    • 功能说明
      生成指定长度且所有元素值相同的元组

    tuple_rand - 生成随机元组

    • 语法
      tuple_rand( : : Size : Tuple)

    • 示例

    tuple_rand(10, RandomTuple)  // 10个随机数(0~1)
    • 功能说明
      生成指定长度的随机数元组(0~1均匀分布)

    元组基本操作

    tuple_length - 获取元组长度

    • 语法
      tuple_length( : Tuple : : Length)

    • 示例

    tuple_length([1,2,3], Len)  // Len=3
    • 功能说明
      返回元组中元素的数量

    tuple_concat - 连接元组

    • 语法
      tuple_concat( : Tuple1, Tuple2 : : Concatenated)

    • 示例

    tuple_concat([1,2], [3,4], Result)  // Result=[1,2,3,4]
    • 功能说明
      将两个元组连接成一个新元组

    元组元素访问

    tuple_select - 选择元组元素

    • 语法
      tuple_select( : Tuple : : Index : Selected)

    • 示例

    tuple_select([10,20,30,40], [0,2], Selected)  // Selected=[10,30]
    • 功能说明
      根据索引选择元组中的元素(索引从0开始)

    tuple_find - 查找元素位置

    • 语法
      tuple_find( : Tuple, Value : : : Indices)

    • 示例

    tuple_find([5,3,7,3,9], 3, Indices)  // Indices=[1,3]
    • 功能说明
      查找元组中指定值出现的所有位置索引

    元组数学运算

    tuple_add - 元组加法

    • 语法
      tuple_add( : Tuple1, Tuple2 : : Sum)

    • 示例

    tuple_add([1,2,3], [4,5,6], Sum)  // Sum=[5,7,9]
    • 功能说明
      对两个元组进行逐元素加法运算

    tuple_mult - 元组乘法

    • 语法
      tuple_mult( : Tuple1, Tuple2 : : Product)

    • 示例

    tuple_mult([1,2,3], [4,5,6], Prod)  // Prod=[4,10,18]
    • 功能说明
      对两个元组进行逐元素乘法运算

    元组逻辑运算

    tuple_and - 逻辑与运算

    • 语法
      tuple_and( : Tuple1, Tuple2 : : And)

    • 示例

    tuple_and([1,0,1], [1,1,0], Result)  // Result=[1,0,0]
    • 功能说明
      对两个元组进行逐元素逻辑与运算

    tuple_not - 逻辑非运算

    • 语法
      tuple_not( : Tuple : : Not)

    • 示例

    tuple_not([1,0,1], Result)  // Result=[0,1,0]
    • 功能说明
      对元组进行逐元素逻辑非运算

    元组排序与统计

    tuple_sort - 元组排序

    • 语法
      tuple_sort( : Tuple : : Sorted)

    • 示例

    tuple_sort([3,1,4,2], Sorted)  // Sorted=[1,2,3,4]
    • 功能说明
      对元组元素进行升序排序

    tuple_max - 求最大值

    • 语法
      tuple_max( : Tuple : : Max)

    • 示例

    tuple_max([5,2,8,3], MaxVal)  // MaxVal=8
    • 功能说明
      返回元组中的最大值

    元组类型转换

    tuple_number - 转换为数字元组

    • 语法
      tuple_number( : Tuple : : Number)

    • 示例

    tuple_number(['1','2','3'], Numbers)  // Numbers=[1,2,3]
    • 功能说明
      将字符串元组转换为数字元组

    tuple_string - 转换为字符串元组

    • 语法
      tuple_string( : Tuple : Format : String)

    • 示例

    tuple_string([1.5,2.3], '.2f', StrTuple)  // StrTuple=['1.50','2.30']
    • 功能说明
      将数字元组转换为格式化字符串元组


    十六.对象操作

    对象创建与生成

    gen_empty_obj - 创建空对象

    • 语法
      gen_empty_obj( : : : EmptyObject)

    • 示例

    gen_empty_obj(EmptyRegion)
    • 功能说明
      创建一个不包含任何数据的空对象,常用于初始化对象变量

    gen_region_points - 从点生成区域

    • 语法
      gen_region_points( : Region : Rows, Columns : )

    • 示例

    gen_region_points(Region, [100,150,200], [50,100,150])
    • 功能说明
      根据给定的像素坐标点(Rows,Columns)生成区域对象

    对象复制与转换

    copy_obj - 复制对象

    • 语法
      copy_obj( : Objects : : Index, Num : ObjectCopy)

    • 示例

    copy_obj(OriginalRegions, 1, 3, CopiedRegions)
    • 功能说明
      复制对象或对象数组中的一部分,Index指定起始索引(1-based),Num指定数量

    obj_to_integer - 对象转整数

    • 语法
      obj_to_integer( : Object : : Integer)

    • 示例

    obj_to_integer(ImageHandle, ImageID)
    • 功能说明
      将对象句柄转换为整数表示(主要用于C/C++接口)

    对象连接与分离

    concat_obj - 连接对象数组

    • 语法
      concat_obj( : Objects1, Objects2 : : ConnectedObjects)

    • 示例

    concat_obj(Regions1, Regions2, AllRegions)
    • 功能说明
      将两个对象数组连接成一个新的对象数组

    select_obj - 选择对象元素

    • 语法
      select_obj( : Objects : : Index : SelectedObject)

    • 示例

    select_obj(RegionArray, 3, SingleRegion)
    • 功能说明
      从对象数组中选择指定索引(1-based)的单个对象

    对象信息获取

    count_obj - 统计对象数量

    • 语法
      count_obj( : Objects : : Number)

    • 示例

    count_obj(RegionList, NumRegions)
    • 功能说明
      统计对象数组中的元素数量

    get_obj_class - 获取对象类型

    • 语法
      get_obj_class( : Object : : Class)

    • 示例

    get_obj_class(Image, Type)  // 返回'image'
    get_obj_class(Region, Type) // 返回'region'
    • 功能说明
      获取对象的类型名称,如'image'、'region'、'xld'等

    对象比较与测试

    test_equal_obj - 测试对象相等性

    • 语法
      test_equal_obj( : Objects1, Objects2 : : IsEqual)

    • 示例

    test_equal_obj(RegionA, RegionB, Same)
    • 功能说明
      比较两个对象是否完全相同,返回布尔结果

    test_subset_region - 测试区域包含关系

    • 语法
      test_subset_region( : Region1, Region2 : : IsSubset)

    • 示例

    test_subset_region(SmallRegion, LargeRegion, IsInside)
    • 功能说明
      测试Region1是否是Region2的子集

    对象几何变换

    affine_trans_region - 仿射变换区域

    • 语法
      affine_trans_region( : Region, HomMat2D : RegionAffineTrans : Interpolate : )

    • 示例

    hom_mat2d_identity(Matrix)
    hom_mat2d_rotate(Matrix, rad(45), 0, 0, RotMatrix)
    affine_trans_region(Region, RotMatrix, RotatedRegion, 'constant')
    • 功能说明
      对区域对象应用2D仿射变换

    zoom_region - 区域缩放

    • 语法
      zoom_region( : Region : RegionZoom : ScaleWidth, ScaleHeight : )

    • 示例

    zoom_region(Region, ZoomedRegion, 0.5, 0.5)
    • 功能说明
      按指定比例缩放区域对象

    对象可视化

    get_obj_info - 获取对象信息

    • 语法
      get_obj_info( : Object : : InfoName : InfoValue)

    • 示例

    get_obj_info(Image, 'width', Width)
    get_obj_info(Region, 'area', Area)
    • 功能说明
      获取对象的特定属性信息,如图像宽度、区域面积等


    十七.开发工具

    程序调试与分析

    dev_disp_text - 调试文本显示

    • 语法
      dev_disp_text( : : TextString, CoordSystem, Row, Column, Color, Box : )

    • 示例

    dev_disp_text('Processing image '+ImageIndex, 'window', 12, 12, 'black', 'true')
    • 功能说明
      在图形窗口显示调试文本,可带背景框,用于实时显示变量值或程序状态

    dev_error_var - 获取错误变量

    • 语法
      dev_error_var( : : Operator, Index : Variable)

    • 示例

    try
        read_image(Image, 'invalid.jpg')
    catch (Exception)
        dev_error_var('read_image', 0, ErrorMessage)
    endtry
    • 功能说明
      获取特定算子调用时的错误信息变量

    性能分析工具

    count_seconds - 精确计时

    • 语法
      count_seconds( : : : Seconds)

    • 示例

    count_seconds(StartTime)
    * 执行待测代码
    count_seconds(EndTime)
    ExecutionTime := EndTime - StartTime
    • 功能说明
      获取高精度系统时间(秒),用于代码性能分析

    profile_operations - 操作性能分析

    • 语法
      profile_operations( : : Mode : )

    • 示例

    profile_operations('on')  // 开启性能分析
    * 执行待分析代码
    profile_operations('off') // 关闭并显示结果
    • 功能说明
      分析算子执行时间和调用次数,支持'on'/'off'/'reset'模式

    代码生成工具

    export_procedure - 导出过程

    • 语法
      export_procedure( : : ProcedureName, FileName, Target : )

    • 示例

    export_procedure('image_processing', 'proc.hdvp', 'hdev')
    • 功能说明
      将指定过程导出为独立文件,支持多种目标格式

    gen_cpp_code - 生成C++代码

    • 语法
      gen_cpp_code( : : FileName, ProcedureNames : )

    • 示例

    gen_cpp_code('detection.cpp', ['preprocess','detect'])
    • 功能说明
      将HDevelop过程转换为可嵌入的C++代码

    交互式开发工具

    inspect_shape_model - 形状模板检查

    • 语法
      inspect_shape_model( : : ModelID, GenParamName, GenParamValue : )

    • 示例

    inspect_shape_model(ModelID, 'contrast', 20)
    • 功能说明
      交互式查看和调整形状模板参数

    dev_inspect_ctrl - 控制变量检查

    • 语法
      dev_inspect_ctrl( : : VariableName : )

    • 示例

    Threshold := 128
    dev_inspect_ctrl('Threshold')  // 弹出交互调节窗口
    • 功能说明
      创建交互式控件来实时调整变量值

    自动化测试工具

    test_equal_obj - 对象相等性测试

    • 语法
      test_equal_obj( : Objects1, Objects2 : : IsEqual)

    • 示例

    test_equal_obj(ExpectedResult, ActualResult, TestPassed)
    if (not TestPassed)
        dev_disp_text('Test failed!', 'window', 50, 50, 'red', 'true')
    endif
    • 功能说明
      自动化测试中验证两个对象是否相同

    assert - 断言检查

    • 语法
      assert( : : Condition, Message : )

    • 示例

    assert(Area > 100, 'Area too small')
    • 功能说明
      验证条件是否为真,否则抛出异常并显示消息

    代码优化工具

    optimize_direct - 直接优化模式

    • 语法
      optimize_direct( : : Mode : )

    • 示例

    optimize_direct('on')  // 开启直接执行模式
    * 性能关键代码
    optimize_direct('off') // 恢复解释模式
    • 功能说明
      切换直接执行模式(提高速度)或解释模式(便于调试)

    get_operator_precedence - 获取算子优先级

    • 语法
      get_operator_precedence( : : OperatorName : Precedence)

    • 示例

    get_operator_precedence('threshold', Priority)
    • 功能说明
      查询算子的执行优先级,用于优化执行顺序


    十八.通信算子分类

    设备通信接口

    open_framegrabber - 打开图像采集设备

    • 语法
      open_framegrabber( : : Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger, CameraType, Device, Port, LineIn : AcqHandle)

    • 示例

    open_framegrabber('GigEVision', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', 'default', 'default', 'default', 0, -1, AcqHandle)
    • 功能说明
      连接图像采集设备(GigE, USB3 Vision等),返回采集句柄

    close_framegrabber - 关闭采集设备

    • 语法
      close_framegrabber( : : AcqHandle : )

    • 示例

    close_framegrabber(AcqHandle)
    • 功能说明
      关闭图像采集设备连接

    工业通信协议

    opc_ua_read_node - OPC UA读取

    • 语法
      opc_ua_read_node( : : HostName, NodeId, NamespaceIndex, AttributeId : Value)

    • 示例

    opc_ua_read_node('opc.tcp://localhost', 'ns=2;s=Device1.Temperature', 2, 13, TempValue)
    • 功能说明
      通过OPC UA协议从工业设备读取数据

    modbus_read_holding_registers - Modbus读取

    • 语法
      modbus_read_holding_registers( : : Port, SlaveAddress, StartingAddress, Quantity : Values)

    • 示例

    modbus_read_holding_registers('COM3', 1, 40001, 5, RegisterValues)
    • 功能说明
      通过Modbus RTU协议读取保持寄存器

    网络通信

    socket_connect - 建立Socket连接

    • 语法
      socket_connect( : : HostName, Port, Timeout : Socket)

    • 示例

    socket_connect('192.168.1.100', 5000, 1000, SocketHandle)
    • 功能说明
      创建TCP/IP socket连接

    socket_send_data - Socket发送数据

    • 语法
      socket_send_data( : : Socket, Data : )

    • 示例

    socket_send_data(SocketHandle, 'Result: OK')
    • 功能说明
      通过socket连接发送数据

    串口通信

    serial_open - 打开串口

    • 语法
      serial_open( : : PortName, BaudRate, DataBits, StopBits, Parity, FlowControl : SerialHandle)

    • 示例

    serial_open('COM1', 9600, 8, 1, 'none', 'none', SerialHandle)
    • 功能说明
      配置并打开串行端口

    serial_read_line - 读取串口数据

    • 语法
      serial_read_line( : : SerialHandle, Timeout : Data)

    • 示例

    serial_read_line(SerialHandle, 500, ReceivedData)
    • 功能说明
      从串口读取一行数据(直到换行符)

    数据交换接口

    set_window_param - 设置窗口参数

    • 语法
      set_window_param( : : WindowHandle, Param, Value : )

    • 示例

    set_window_param(WindowHandle, 'window_handle', 'visible')
    • 功能说明
      配置窗口显示参数,可用于远程显示控制

    get_window_param - 获取窗口参数

    • 语法
      get_window_param( : : WindowHandle, Param : Value)

    • 示例

    get_window_param(WindowHandle, 'window_handle', WinHandle)
    • 功能说明
      查询窗口参数信息

    工业相机控制

    set_framegrabber_param - 设置采集参数

    • 语法
      set_framegrabber_param( : : AcqHandle, Param, Value : )

    • 示例

    set_framegrabber_param(AcqHandle, 'ExposureTime', 5000)
    • 功能说明
      配置图像采集设备参数

    grab_image_async - 异步采集图像

    • 语法
      grab_image_async( : Image : AcqHandle, MaxDelay : )

    • 示例

    grab_image_async(Image, AcqHandle, -1)
    • 功能说明
      异步方式采集单帧图像,不阻塞程序执行


    十九.标定算子分类

    相机标定

    create_calib_data - 创建标定数据模型

    • 语法
      create_calib_data( : : CalibSetup, NumCameras, NumCalibObjects : CalibDataID)

    • 示例

    create_calib_data('calibration_object', 1, 1, CalibDataID)
    • 功能说明
      创建相机标定数据模型,指定标定类型(单/多相机)、标定板数量

    set_calib_data_calib_object - 设置标定板参数

    • 语法
      set_calib_data_calib_object( : : CalibDataID, CalibObjIdx, CalibObjDescr : )

    • 示例

    set_calib_data_calib_object(CalibDataID, 0, 'calplate_30mm.descr')
    • 功能说明
      配置标定板描述文件(包含尺寸、标记点信息等)

    find_calib_object - 查找标定板

    • 语法
      find_calib_object( : Image : CalibDataID, CameraIdx, CalibObjIdx, GenParamName, GenParamValue : )

    • 示例

    find_calib_object(Image, CalibDataID, 0, 0, [], [])
    • 功能说明
      在图像中自动检测标定板并提取标记点

    calibrate_cameras - 执行相机标定

    • 语法
      calibrate_cameras( : : CalibDataID : Error)

    • 示例

    calibrate_cameras(CalibDataID, ReprojectionError)
    • 功能说明
      根据采集的多组标定板图像计算相机内外参数

    手眼标定

    create_hand_eye_calib_data - 创建手眼标定模型

    • 语法
      create_hand_eye_calib_data( : : CalibSetup : HandEyeCalibDataID)

    • 示例

    create_hand_eye_calib_data('robot_stationary_camera', HandEyeCalibID)
    • 功能说明
      创建手眼标定数据模型,支持四种标定场景配置

    set_hand_eye_calib_data - 设置标定数据

    • 语法
      set_hand_eye_calib_data( : : HandEyeCalibDataID, DataType, DataIdx, Pose : )

    • 示例

    set_hand_eye_calib_data(HandEyeCalibID, 'tool_in_base_pose', 0, ToolPose)
    • 功能说明
      添加机器人位姿数据或标定板位姿数据

    calibrate_hand_eye - 执行手眼标定

    • 语法
      calibrate_hand_eye( : : HandEyeCalibDataID : Errors)

    • 示例

    calibrate_hand_eye(HandEyeCalibID, CalibrationErrors)
    • 功能说明
      计算相机与机器人之间的变换关系

    标定结果应用

    get_calib_data - 获取标定结果

    • 语法
      get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue)

    • 示例

    get_calib_data(CalibDataID, 'camera', 0, 'params', CameraParams)
    • 功能说明
      查询标定后的相机参数、畸变系数等结果数据

    change_radial_distortion_image - 图像畸变校正

    • 语法
      change_radial_distortion_image( : Image, Region : CorrectedImage : CamParamIn, CamParamOut : )

    • 示例

    change_radial_distortion_image(Image, Region, CorrectedImage, CamParamIn, CamParamOut)
    • 功能说明
      根据标定结果对图像进行径向畸变校正

    标定板生成

    gen_caltab - 生成标定板描述文件

    • 语法
      gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )

    • 示例

    gen_caltab(7, 7, 0.03, 0.5, 'caltab_30mm.descr', 'caltab.ps')
    • 功能说明
      生成圆形标记点标定板的描述文件和可打印的PostScript文件

    create_caltab - 创建标定板图像

    • 语法
      create_caltab( : : XNum, YNum, MarkDist, DiameterRatio, Width, Height, Row, Column : CalTabImage)

    • 示例

    create_caltab(7, 7, 0.03, 0.5, 512, 512, 256, 256, CalTabImage)
    • 功能说明
      直接生成标定板的合成图像,用于仿真测试


    实战案例

    案例1:二维码识别

    * 读取图像
    read_image(Image, 'qrcode.jpg')
    
    * 创建二维码模型
    create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
    
    * 查找二维码
    find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
    
    * 显示结果
    dev_display(Image)
    dev_display(SymbolXLDs)
    disp_message('解码结果: ' + DecodedDataStrings[0], 'window', 12, 12, 'black', 'true')

    案例2:尺寸测量

    * 读取图像并预处理
    read_image(Image, 'part.jpg')
    rgb1_to_gray(Image, GrayImage)
    threshold(GrayImage, Region, 0, 120)
    
    * 测量零件尺寸
    smallest_rectangle1(Region, Row1, Column1, Row2, Column2)
    Width := Column2 - Column1
    Height := Row2 - Row1
    
    * 计算像素到实际尺寸比例
    * (假设已知参考长度为100mm对应200像素)
    PixelSize := 100.0 / 200.0  // mm/pixel
    RealWidth := Width * PixelSize
    RealHeight := Height * PixelSize
    
    * 显示结果
    dev_display(Image)
    dev_display(Region)
    disp_message(['宽度: ' + RealWidth$'.2f' + ' mm', '高度: ' + RealHeight$'.2f' + ' mm'], 'window', 12, 12, 'black', 'true')


    实战应用流程经验分享

    1. 标准检测流程

    1. 图像采集 (grab_image)
    2. 预处理 (gauss_filter, emphasize)
    3. 区域分割 (threshold, connection)
    4. 特征提取 (area_center, circularity)
    5. 结果判断 (if-then-else)
    6. 结果显示 (dev_display, disp_message)

    2. 高精度匹配流程

    1. 创建模板 (create_shape_model)
    2. 图像对齐 (find_shape_model)
    3. ROI提取 (reduce_domain)
    4. 亚像素测量 (edges_sub_pix, fit_line_contour_xld)
    5. 偏差计算 (distance_pp)

    3. 深度学习流程

    1. 模型加载 (read_dl_model)
    2. 预处理 (zoom_image, convert_image_type)
    3. 推理执行 (apply_dl_classifier)
    4. 结果解析 (get_dl_classifier_result)
    5. 后处理 (select_obj, connection)


    最佳实践建议

    1. 算子选择原则

      • 优先使用专用算子而非通用算子

      • 选择支持ROI处理的算子提高效率

      • 考虑算子对亚像素精度的支持

    2. 性能优化技巧

      * 减少处理区域
      reduce_domain(Image, ROI, ImageReduced)
      
      * 合理设置金字塔层级
      set_system('image_pyramid_levels', 3)
      
      * 复用中间结果
      copy_obj(Region, RegionCopy, 1, -1)
    3. 代码可维护性

      * 使用有意义的变量名
      DefectRegion := threshold(Image, 200, 255)
      
      * 添加详细注释
      // 使用Otsu方法自动计算阈值
      binary_threshold(Image, Region, 'max_separability', 'dark', UsedThreshold)
      
      * 封装常用操作为过程
      procedure preprocess_image(inputImage, outputImage)
          rgb1_to_gray(inputImage, GrayImage)
          emphasize(GrayImage, outputImage, 7, 7, 1)
          return ()
      endprocedure
    4. 版本兼容性

      • 注意算子在不同Halcon版本中的变化

      • 使用get_operator_info查询算子信息

      • 优先使用长期支持(LTS)版本中的稳定算子



    重要说明:

    如果需要完整算子文档建议:

    1. 在HDevelop中按F1查看《HALCON Operator Reference》
    2. 使用HDevelop的算子窗口搜索功能(Ctrl+F)
    3. 访问MVTec官方文档网站获取最新说明

    本文到此结束,制作不易,未经作者允许禁止转载!!!

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2384625.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    Redis从入门到实战 - 原理篇

    一、数据结构 1. 动态字符串SDS 我们都知道Redis中保存的key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 获取字符串长…

    26考研|高等代数:线性变换

    前言 线性变换这一章节是考频较高的一部分&#xff0c;此部分涉及考点较多&#xff0c;涉及的考题也较多&#xff0c;学习线性变换时&#xff0c;应该注意搭建线性变换与矩阵之间的联系&#xff0c;掌握如何利用矩阵表示一个线性变换结构&#xff0c;同时介绍了最简单的线性变…

    VSCode如何像Pycharm一样“““回车快速生成函数注释文档?如何设置文档的样式?autoDocstring如何设置自定义模板?

    文章目录 📖 介绍 📖🏡 演示环境 🏡📒 让VSCode拥有PyCharm级注释生成能力 📒🚀 实现方案🛠️ 备用方案📒 自定义注释文档格式样式 📒🔄 切换主流注释风格✨ 深度自定义模板🛠️ 类型提示与注释联动优化⚓️ 相关链接 ⚓️📖 介绍 📖 用PyCharm写P…

    PCIe学习笔记(3)链路初始化和训练

    PCIe学习系列往期文章 PCIe学习笔记&#xff08;1&#xff09;Hot-Plug机制 PCIe学习笔记&#xff08;2&#xff09;错误处理和AER/DPC功能 文章目录 链路训练概述Bit LockSymbol Lock (Gen1/2)Block Alignment (Gen3)Lane Polarity InversionLane ReversalLane-to-Lane De-ske…

    Oracle 11g导出数据库结构和数据

    第一种方法&#xff1a;Plsql 利用plsql可视化工具导出&#xff0c;首先根据步骤导出表结构&#xff1a; 工具(Tools)->导出用户对象(export user objects)。 其次导出数据表结构&#xff1a; 工具(Tools)->导出表(export Tables)->选中表->sql inserts(where语…

    零基础设计模式——创建型模式 - 抽象工厂模式

    第二部分&#xff1a;创建型模式 - 抽象工厂模式 (Abstract Factory Pattern) 我们已经学习了单例模式&#xff08;保证唯一实例&#xff09;和工厂方法模式&#xff08;延迟创建到子类&#xff09;。现在&#xff0c;我们来探讨创建型模式中更为复杂和强大的一个——抽象工厂…

    解锁内心的冲突:神经症冲突的理解与解决之道

    目录 一、神经症冲突概述 二、冲突的基本类型 三、未解决冲突的后果 四、尝试解决的途径 五、真正解决冲突 六、总结 干货分享&#xff0c;感谢您的阅读&#xff01; 人类的内心世界复杂多变&#xff0c;常常充满了各种冲突和矛盾。每个人在成长的过程中&#xff0c;都或…

    Redisson读写锁和分布式锁的项目实践

    解决方案:采用读写锁 什么是读写锁 Redisson读写锁是一种基于Redis实现特殊的机制,用于在分布式系统中协调对共享资源的访问,其继承了Java中的ReentrantReadWriteLock的思想.特别适用于读多写少的场景.其核心是:允许多个线程同时读取共享资源,但写操作必须占用资源.从而保证线…

    SkyWalking高频采集泄漏线程导致CPU满载排查思路

    SkyWalking高频采集泄漏线程导致CPU满载排查思路 契机 最近在消除线上服务告警&#xff0c;发现Java线上测试服经常CPU满载告警&#xff0c;以前都是重启解决&#xff0c;今天好好研究下&#xff0c;打arthas火焰图发现是SkyWalking-agent的线程采集任务一直在吃cpu&#xff…

    【HarmonyOS 5】Map Kit 地图服务之应用内地图加载

    #HarmonyOS SDK应用服务&#xff0c;#Map Kit&#xff0c;#应用内地图 目录 前期准备 AGC 平台创建项目并创建APP ID 生成调试证书 生成应用证书 p12 与签名文件 csr 获取 cer 数字证书文件 获取 p7b 证书文件 配置项目签名 配置签名证书指纹 项目开发 配置Client I…

    ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e)

    ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e) in ‘/Users/*****/MposApp/MposApp/Modules/Common/Mpos/NewLand/MESDK.framework/MESDK’ clang: error: linker command failed with exit code 1 (use -v to see invocation) 报错 解决方…

    通过vue-pdf和print-js实现PDF和图片在线预览

    npm install vue-pdf npm install print-js <template><div><!-- PDF 预览模态框 --><a-modal:visible"showDialog":footer"null"cancel"handleCancel":width"800":maskClosable"true":keyboard"…

    视频监控管理平台EasyCVR结合AI分析技术构建高空抛物智能监控系统,筑牢社区安全防护网

    高空抛物严重威胁居民生命安全与公共秩序&#xff0c;传统监管手段存在追责难、威慑弱等问题。本方案基于EasyCVR视频监控与AI视频分析技术&#xff08;智能分析网关&#xff09;&#xff0c;构建高空抛物智能监控系统&#xff0c;实现24小时实时监测、智能识别与精准预警&…

    2.2.1 05年T1复习

    引言 从现在进去考研英语基础阶段的进阶&#xff0c;主要任务还是05-09年阅读真题的解题&#xff0c;在本阶段需要注意正确率。阅读最后目标&#xff1a;32-34分&#xff0c;也就是每年真题最多错四个。 做题步骤&#xff1a; 1. 预习&#xff1a;读题干并找关键词 做题&#…

    Python-11(集合)

    与字典类似&#xff0c;集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的&#xff0c;并且也是无序的。 创建集合 使用花括号 set {"python","Java"} print(type(set)) 使用集合推导式 set {s for s in "python"} print(set…

    Opixs: Fluxim推出的全新显示仿真模拟软件

    Opixs 是 Fluxim 最新研发的显示仿真模拟软件&#xff0c;旨在应对当今显示技术日益复杂的挑战。通过 Opixs&#xff0c;研究人员和工程师可以在制造前&#xff0c;设计并验证 新的像素架构&#xff0c;从而找出更功节能、色彩表现更优的布局方案。 Opixs 适用于学术研究和工业…

    佰力博与您探讨PVDF薄膜极化特性及其影响因素

    PVDF&#xff08;聚偏氟乙烯&#xff09;薄膜的极化是其压电性能形成的关键步骤&#xff0c;通过极化处理可以显著提高其压电系数和储能能力。极化过程涉及多种方法和条件&#xff0c;以下从不同角度详细说明PVDF薄膜的极化特性及其影响因素。 1、极化方法 热极化&#xff1a;…

    自动获取ip地址安全吗?如何自动获取ip地址

    在数字化网络环境中&#xff0c;IP地址的获取方式直接影响设备连接的便捷性与安全性。自动获取IP地址&#xff08;通过DHCP协议&#xff09;虽简化了配置流程&#xff0c;但其安全性常引发用户疑虑。那么&#xff0c;自动获取IP地址安全吗&#xff1f;如何自动获取IP地址&#…

    STM32:深度解析RS-485总线与SP3485芯片

    32个设备 知识点1【RS-485的简介】 RS-485是一种物理层差分总线标准&#xff0c;在串口的基础上演变而来&#xff1b; 两者虽然不在同一层次上直接对等&#xff0c;但在实际系统中&#xff0c;往往使用RS-485驱动差分总线&#xff0c;将USART转换为适合长距离、多点通信的物…

    亚马逊搜索代理: 终极指南

    文章目录 前言一、为什么需要代理来搜索亚马逊二、如何选择正确的代理三、搜索亚马逊的最佳代理类型四、为亚马逊搜索设置代理五、常见挑战及克服方法六、亚马逊搜索的替代方法总结 前言 在没有代理的情况下搜索亚马逊会导致 IP 禁止、验证码和速度限制&#xff0c;从而使数据…