日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Halcon中用于RealSense设备的图像采集接口

發布時間:2024/3/26 ChatGpt 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Halcon中用于RealSense设备的图像采集接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Halcon中用于RealSense設備的圖像采集接口

  • 前言
    • 1.接口特性
    • 2.識別并打開設備
    • 3.采集
      • 3.1設備控制
      • 3.2 抓取操作符
      • 3.3 獲取三維數據(ObjectModel3D)
      • 3.4 配置數據流
      • 3.5 緩沖處理
    • 4.GenICam GenApi
    • 5.參數
      • 5.1 參數的命名規則
      • 5.2 GenlCam 數據類型
      • 5.3 持續設備狀態
    • 6. 官方例程

)

前言

在新版本的halcon中內置了realsense的接口,本文對doc/html/reference/acquisition/hAcqRealSense.html文檔中的內容做一定的整理 翻譯 機翻 部分機翻。
跳過安裝SDK、配置Halcon接口的步驟。

1.接口特性

  • 自動生成ObjectModel3D
  • 自動處理ObjectModel3D的顏色疊加問題
  • 無效的點會自動從生成的ObjectModel3D中排除
  • 同步和異步抓取

2.識別并打開設備

open_framegrabber:該算子用于連接realsense設備,其中的參數可以對獲取到的圖像的特性進行配置,當然,在持續采樣過程中,也可以通過set_framegrabber_param算子對這些參數進行修改,一般情況可以使用默認參數。
與通過RealSense接口訪問的設備的連接是通過設備ID建立的,該ID在每個設備上保證是唯一的,并且在多個會話中保持不變。系統中所有設備的列表可以通過info_framegrabber算子的參數'device'或'info_boards'獲得,這兩個參數返回的列表格式為:' | device:<device id> | unique_name:<unique name> | ... '。上面的字符串參數不僅可以標識不同的設備,而且可以直接用于open_framegrabber中的'Device'參數中(這時只需要'| device:<device id>'字符串條目)。
作為一種特殊情況,可以使用字符串 "default"–在這種情況下,HALCON采集接口將使用第一個可用設備(不可訪問的設備將被跳過)。然而,當多個設備連接到系統時,這可能導致設備的非確定性打開。

RealSense設備通常由多個模塊組成,每個模塊提供一種類型的數據流。例如,深度模塊提供深度數據,顏色模塊提供顏色數據,可以疊加生成彩色點云。每個模塊也可能由多個子組件組成(例如,D400設備的深度模塊由兩個紅外傳感器和一個紅外激光投影儀組成)。
配置選項是在每個模塊的基礎上管理的。這意味著有些選項可能只對其中一個模塊有效,有些選項可能對兩個模塊都有效。例如,"ExposureTime(曝光時間) "功能可以為深度和顏色模塊配置,"LaserPower(激光功率) "功能只能為深度模塊配置。為了涵蓋這種使用情況,同時保持 "曝光時間 "等功能的單一性,SFNC(GenICam標準功能命名公約)指定了 “SourceSelector”。它允許切換配置選項的目標。
下面的例子說明了這個概念,它為每個模塊配置了不同的 “曝光時間”:

set_framegrabber_param (AcqHandle,'SourceSelector','Depth') set_framegrabber_param (AcqHandle,'ExposureTime',10000) set_framegrabber_param (AcqHandle,'SourceSelector','Color') set_framegrabber_param (AcqHandle,'ExposureTime',15000)

諸如ExposureTime這些特性的名稱參考于librealsense2/h/rs_option.h文件,除非SFNC規定了一個特定的不同名稱。

3.采集

3.1設備控制

圖像采集可以是同步的(grab_image/grab_data),也可以是異步的(grab_image_start/grab_image_async/grab_data_async),見操作符的參考文件。
該接口可完全配置和控制攝像機的采集過程。請注意,在采集過程中,GenICam可能會鎖定相機的某些功能。
在同步抓取(grab_image/grab_data)的情況下,每張圖像都會在內部(internally)開始新的采集,因此應用程序總是能得到一張新的圖像。在提供圖像之前,采集會再次停止,因此在各個grab_image/grab_data調用之間,所有與采集有關的功能都保持解鎖狀態。
在異步抓取中,通過 grab_image_start 顯式啟動或通過 grab_image_async/grab_data_async 隱式啟動,接口在內部保持抓取運行,收集更多的圖像,通過未來的 grab_image_async/grab_data_async 調用傳遞。采集的相關功能被鎖定,直到使用set_framegrabber_param(..., 'do_abort_grab', ...)停止采集。

3.2 抓取操作符

采集接口提供了兩種從設備獲取圖像(或其他)數據的機制,即 grab_image/grab_image_async 和 grab_data/grab_data_async。在內部,這兩種機制的工作方式完全相同(特別是它們如何從設備上獲取和處理數據),它們的區別在于如何向應用程序提供輸出。
grab_image/grab_image_async操作符只能輸出一張圖像。對于RealSense設備,這個單一的圖像將包含3D點的Z坐標。它將作為圖像類型 "real "的圖像返回,其中每個像素是一個浮點值。這種方法目前也被HDevelop的圖像采集助手所使用。
對于RealSense設備來說,grab_image/grab_image_async操作符太有限了,無法處理所有的數據。相反,應該使用 grab_data/grab_data_async 操作符。操作符的第一個輸出變量中返回的圖像元組總是包含三維點的X、Y和Z平面。所有這些都是 "real "圖像類型的圖像。此外,如果激活了,并且設備提供了必要的視頻流,圖像元組將包含顏色疊加和置信度圖。要打開和關閉這些額外的組件,請參考SFNC的功能 "ComponentSelector "和 “ComponentEnable”。操作符也可以在’Date’輸出變量中返回一個自動生成的ObjectModel3D。

3.3 獲取三維數據(ObjectModel3D)

默認情況下,grab_data運算符只輸出各種可用的圖像或圖像平面。為了處理三維數據,三維坐標必須被組合成一個點云。在HALCON的術語中,這被稱為ObjectModel3D。RealSense采集接口提供了自動生成這種ObjectModel3D的機制。要激活這個功能,請使用參數 “create_objectmodel3d”。無效的點將被自動從生成的ObjectModel3D中排除。此外,可以使用參數’coordinate_transform_mode’、‘confidence_mode’、'confidence_threshold’和’add_objectmodel3d_overlay_attrib’配置這個過程。
點云可以被手動生成:ObjectModel3D也可以通過從圖像元組中提取X、Y和Z平面并使用HALCON操作符’xyz_to_object_model_3d’來手動生成。

3.4 配置數據流

在open_framegrabber過程中,會自動選擇深度數據流的最大可用分辨率。如果有的話,彩色數據流和置信度疊加會自動激活。

3.5 緩沖處理

接口默認為采集引擎分配了4個緩沖區(緩沖區的數量可以通過open_framegrabber的’Generic’參數改變)。
每當一個新的圖像被成功獲取并作為HALCON圖像傳遞給應用程序時,接口就會將緩沖區鎖定(不將其返回給采集引擎),直到應用程序調用一個新的抓取相關的操作符或者使用set_framegrabber_param(.., 'do_abort_grab', ...)中止采集。在這期間,查詢這個 "最后獲取的 "緩沖區的信息是完全安全的–例如通過get_framegrabber_param參數查詢緩沖區屬性,如’buffer_timestamp’, ‘buffer_is_incomplete’, ‘image_width’ 和 ‘image_height’。
當應用程序調用一個新的抓取相關的操作符時,接口會將緩沖區返回給采集引擎,與緩沖區相關的查詢就不再有效了。
可能發生的情況是,攝像機暫時或不斷地以高于應用程序處理數據的速度獲取數據。在這種情況下,RealSense Producer的流媒體引擎會根據’[Stream]StreamBufferHandlingMode’參數來決定如何處理所獲取的緩沖區。

4.GenICam GenApi

5.參數

5.1 參數的命名規則

一共分三種命名規則,對應三種來源的參數:

  • HALCON GenTL的內部參數
    這些都是按照 "下劃線 "的命名方式來命名的,例如,color_space,并且都是小寫。
  • 基于GenICam的設備參數
    通常是相機的參數,采用駝峰法命名,例如ExposureTime
  • 各個RealSense Producer模塊的基于genicam的參數(系統、接口、設備、數據流)
    與上面命名方法一致(駝峰法),但是要加前綴,前綴是用方括號框住的模塊名:
"[System]", e.g., [System]TLVendorName. "[Interface]", e.g., [Interface]InterfaceType. "[Device]", e.g., [Device]DeviceID. "[Stream]", e.g., [Stream]StreamBufferHandlingMode.

5.2 GenlCam 數據類型

Halcon提供的原生類型:

  • integer——帶符號整數
  • real——浮點
  • string——字符串

在訪問基于GenICam的特性時,必須將GenICam數據類型映射到HALCON識別的參數類型。GenICam提供以下類型:

  • IInteger
    整數值,直接映射到HALCON的integer類型。當GenICam特性被確定為IP或MAC地址時,還可以接受real參數
  • IFloat
    浮點值,直接映射到HALCON的實參數類型。它還將接受整數參數
  • IString
    字符串值,直接映射到HALCON的字符串參數類型
  • IBoolean
    通過HALCON的整型參數處理,值為0(0)表示邏輯錯誤,其他值表示邏輯真
  • IEnumeration
    枚舉是一種類型,它允許從一組主要由其名稱識別的值中進行選擇(這些值被稱為 “枚舉條目”)。枚舉是通過HALCON的字符串參數類型進行接口的,而枚舉條目的名稱被用作參數值。
  • ICommand
    該命令類型允許 "執行 "行動。要執行一個命令,請使用set_framegrabber_param,參數為任何數值的整數(該數值會被忽略)。有些命令的執行可能需要較長的時間,命令完成后會提供反饋。要查詢狀態,請對該命令使用get_framegrabber_param。如果它 “已經完成”(命令執行完畢),它將返回一個整數值1,如果它還沒有完成,則返回0。請注意,如果其他一些功能被設計為依賴于該命令,那么查詢 "已完成 "的狀態可能是必要的,以便在命令執行結束后立即使依賴的功能失效(并以新值更新)。
  • IRegister
    寄存器數據類型用于不能被映射到任何其他數據類型的普通內存塊。它們通過HALCON的字符串參數類型進行對接,寄存器的值是寄存器內存的十六進制字符串表示。

5.3 持續設備狀態

采集設備設置的當前狀態(定義其工作狀態的所有參數的值)可能會在沒有采集活動時持續存在,即在 grab_image_start 或 grab_image_async 之前或 set_framegrabber_param(.., 'do_abort_grab', 1) 之后。這不僅適用于實際的設備參數,也適用于配置RealSense Producer的參數和RealSense圖像采集接口的內部參數。設備參數通常會保留到設備斷電為止。RealSense Producer模塊和Cusumer參數會一直保留到調用close_framegrabber。要指示哪些參數需要持久化,請使用參數’settings_selector’。持久性功能包括兩個步驟,將當前的配置存儲到一個文件中,之后再將其重新加載到設備上。由’settings_selector’指示的所選模塊設置,可以使用’do_write_settings’參數存儲,隨后使用’do_load_settings’參數重新加載,在這兩種情況下都要指定想要的持久化文件路徑。要查詢一個特征是否可以被持久化,可以使用后綴’_streamable’。
請注意,雖然文件的格式是有意讓人閱讀的,而且如果需要的話,可以手工修改文件,但這種修改應該由熟悉GenICam持久性功能內部和給定設備的人小心進行。對文件的不當修改會導致使用時出現錯誤。
相同的持久化文件可以應用于相同類型和固件版本的整套設備。將持久化文件應用于另一種類型的設備或使用不同的固件版本,可能會導致不一致或甚至完全失敗。

6. 官方例程

比較簡單,容易看懂

總結

以上是生活随笔為你收集整理的Halcon中用于RealSense设备的图像采集接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。