【機械視覺】Halcon—【二、Halcon算子全面介紹(超詳細版)】

介紹

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 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) // 等待指定線程完成
    • 功能說明
      阻塞當前線程直到指定線程執行完畢


    十五.元組操作

    元組創建與初始化

    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)

    • 示例

    tryread_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.pswp.cn/diannao/84202.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/diannao/84202.shtml
    英文地址,請注明出處:http://en.pswp.cn/diannao/84202.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Https流式輸出一次輸出一大段,一卡一卡的-解決方案

    【背景】 最近遇到一個奇怪的現象&#xff0c;前端vue&#xff0c;后端python&#xff0c;服務部署在服務器上面后&#xff0c;本來一切正常&#xff0c;但公司說要使用https訪問&#xff0c;想著也沒什么問題&#xff0c;切過去發現在沒有更改任何代碼的情況下&#xff0c;ht…

    Vue常用自定義指令-積累的魅力【VUE】

    前言 在【自定義指令—v2與v3之間的區別【VUE基礎】一文中&#xff0c;整理了自定義指令部分vue2和vue3 兩個版本的區別&#xff0c;有興趣的伙伴或者針對自定義部分比較迷茫的伙伴可以跳轉看一下。此次主要介紹一些自己積累的一些自定義指令的代碼&#xff0c;與大家一起分享。…

    【mysql】mysql的高級函數、高級用法

    mysql是最常用的數據庫之一&#xff0c;常見的函數用法大家應該都很熟悉&#xff0c;本文主要例舉一些相對出現頻率比較少的高級用法 (注&#xff1a;需注意mysql版本&#xff0c;大部分高級特性都是mysql8才有的) 多值索引與虛擬列 主要是解決字符串索引問題&#xff0c;光說…

    C#日期和時間:DateTime轉字符串全面指南

    C#日期和時間&#xff1a;DateTime轉字符串全面指南 在 C# 開發中&#xff0c;DateTime類型的時間格式化是高頻操作場景。無論是日志記錄、數據持久化&#xff0c;還是接口數據交互&#xff0c;合理的時間字符串格式都能顯著提升系統的可讀性和兼容性。本文將通過 20 實戰示例…

    Canvas設計圖片編輯器全講解(一)Canvas基礎(萬字圖文講解)

    一、前序 近兩年AI發展太過迅速&#xff0c;各類AI產品層出不窮&#xff0c;AI繪圖/AI工作流/AI視頻等平臺的蓬勃發展&#xff0c;促使圖片/視頻等復雜內容的創作更加簡單&#xff0c;讓更多普通人有了圖片和視頻創作的機會。另一方面用戶內容消費也逐漸向圖片和視頻傾斜。在“…

    Javase易混點專項復習02_static關鍵字

    1. static關鍵字1.1概述1.2修飾一個成員變量例&#xff1a;1.2.1靜態屬性與非靜態屬性示例及內存圖對比 1.3修飾一個方法&#xff08;靜態方法&#xff09;1.4.static修飾成員的訪問特點總結1.5動態代碼塊和靜態代碼塊1.5.1動態代碼塊1.5.2 靜態代碼塊 1.6帶有繼承的對象創建過…

    C++滑動門問題(附兩種方法)

    題目如下&#xff1a; 滑動窗口 - 題目 - Liusers OJ ——引用自OJ網站 方法如下&#xff1a; 1.常規思想 #include<bits/stdc.h> using namespace std; int main() {int n,k;int a[110];cin>>n>>k;for(int i0;i<n;i){cin>>a[i];}for(int i0;i…

    mysql連接池druid監控配置

    文章目錄 前置依賴啟用配置訪問監控一些問題 前置 連接池有很多類型&#xff0c;比如 c3p0&#xff0c;比如 hikariCP&#xff0c;比如 druid。c3p0 一些歷史項目可能用的比較多&#xff0c;hikariCP 需要高性能的項目比較多&#xff0c;druid 性能也很好&#xff0c;而且還提…

    Jetson系統燒錄與環境配置全流程詳解(含驅動、GCC、.Net設置)

    Jetson系統燒錄與環境配置全流程詳解&#xff08;含驅動、GCC、.Net設置&#xff09; 目錄1. 準備工作與工具安裝1.1 主機系統要求1.2 安裝 SDK Manager 2. JetPack 系統燒錄流程2.1 Jetson 進入恢復模式2.2 使用 SDK Manager 燒錄 JetPack 3. Jetson 系統基礎設置4. 配置 .Net…

    分布式緩存:緩存的三種讀寫模式及分類

    文章目錄 緩存全景圖Pre緩存讀寫模式概述1. Cache Aside&#xff08;旁路緩存&#xff09;工作流程優缺點 2. Read/Write Through&#xff08;讀寫穿透&#xff09;工作流程優缺點典型場景 3. Write Behind Caching&#xff08;異步寫回&#xff09;工作流程優缺點典型場景 緩存…

    Ntfs!FindFirstIndexEntry函數中ReadIndexBuffer函數的作用是新建一個Ntfs!_INDEX_LOOKUP_STACK結構

    第一部分&#xff1a; 0: kd> kc # 00 Ntfs!FindFirstIndexEntry 01 Ntfs!NtfsRestartIndexEnumeration 02 Ntfs!NtfsQueryDirectory 03 Ntfs!NtfsCommonDirectoryControl 04 Ntfs!NtfsFsdDirectoryControl 05 nt!IofCallDriver 06 nt!IopSynchronousServiceTail 07 nt!Nt…

    5.24 note

    笛卡爾積(?選擇條件 select a.student_name as member_A, b.student_name as member_B, c.student_name as member_C from schoola as a join schoolb as b join schoolc as c where a.student_name ! b.student_name and a.student_name !…

    為什么需要在循環里fetch?

    假設有多個設備連接在后端,數量不定,需要按個讀回狀態,那么就要在循環里fetch了. 此函數非常好用,來自于國內一個作者,時間久了,忘記了來源,抱歉. export default async function fetchWithTimeout(resource, options {}) {const { timeout 1000 } options;const controll…

    不同凈化技術(靜電 / UV / 濕式)的性能對比研究

    在餐飲油煙和工業廢氣治理領域&#xff0c;油煙凈化技術的選擇至關重要。目前&#xff0c;靜電、UV 光解、濕式洗滌是市場上應用較為廣泛的三種凈化技術。它們憑借不同的工作原理和技術特性&#xff0c;在凈化效率、能耗、適用場景等方面展現出各自的優勢與局限。本文將從多個維…

    Ubuntu 22.04上升級npm版本

    如果使用NVM安裝Node.js npm會自動包含&#xff0c;但版本可能不是最新的。你可以選擇升級&#xff1a; # 檢查當前版本 npm --version# 升級到最新版本 npm install -g npmlatest# 或者升級到特定版本 npm install -g npm9.8.1如果使用其他方法安裝Node.js 通常Node.js安裝…

    項目管理進階:111頁 詳解華為業務變革框架及戰略級項目管理【附全文閱讀】

    BTMS 是一套集成管理系統框架&#xff0c;涵蓋變革規劃、項目執行、實施及生命周期管理等多個關鍵環節。在規劃階段&#xff0c;通過全面收集需求、深入分析現狀&#xff0c;制定出符合業務戰略的年度規劃&#xff0c;明確變革舉措和項目清單。 解決方案開發的 PMOP 流程&#…

    java基礎知識回顧1(可用于Java基礎速通)考前,面試前均可用!

    目錄 一、初識java 二、基礎語法 1.字面量 2.變量 3.關鍵字 4.標識符 聲明&#xff1a;本文章根據黑馬程序員b站教學視頻做的筆記&#xff0c;可對應課程聽&#xff0c;課程鏈接如下: 02、Java入門&#xff1a;初識Java_嗶哩嗶哩_bilibili 一、初識java Java是美國 sun 公…

    Linux下MySQL的安裝與使用

    1 安裝前說明 1.1 Linux系統及工具的準備 安裝并啟動好兩臺虛擬機&#xff1a;CentOS 7 掌握克隆虛擬機的操作 mac地址主機名ip地址UUID 安裝有 Xshell 和 Xftp 等訪問 CentOS 系統的工具 CentOS6 和 CentOS7 在 MySQL 的使用中的區別 防火墻&#xff1a;6是iptables&am…

    在react項目中使用andt日期組件,選擇周和季度,直接獲取所對應的日期區間

    在react項目中使用andt日期組件&#xff0c;選擇周和季度&#xff0c;直接獲取所對應的日期區間 import { DatePicker, Space } from antd; import React from react; const onChange (date, dateString) > {console.log(date,dateString) }; const onChangeweek (date, …

    數字信號處理大實驗2 利用FFT估計信號的頻率

    目錄 3.1 實驗目的 3.2 實驗內容與要求 3.3 實驗原理 3.3.1 基于時域求導-頻域乘法的n階導數積分法 3.3.2 基于頻域卷積的雙/多譜線插值法 3.3.3 基于譜峰和滑動平均的多譜線綜合插值方法 3.3.4 基于相鄰顯著譜線的滑動平均綜合插值方法 3.3.5 基于&#xff08;2&#…