應用程序節點 - AWS Panorama

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

應用程序節點

節點是模型、代碼、攝像機流、輸出和參數。節點有一個界面,用於定義其輸入和輸出。接口可以在您賬户中的軟件包、AWS Panorama 提供的軟件包或內置類型中定義。

在以下範例中,code_nodemodel_node請參閲示例應用程序附帶的示例代碼和模型包。camera_node使用 AWS Panorama 提供的軟件包為您在部署期間指定的攝像機流創建佔位符。

範例 圖形 .json — 節點
"nodes": [ { "name": "code_node", "interface": "123456789012::SAMPLE_CODE.interface" }, { "name": "model_node", "interface": "123456789012::SQUEEZENET_PYTORCH_V1.interface" }, { "name": "camera_node", "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface", "overridable": true, "overrideMandatory": true, "decorator": { "title": "IP camera", "description": "Choose a camera stream." } } ]

Edges (邊)

邊緣會將一個節點的輸出映射到另一個節點的輸入。在以下示例中,第一條邊將從攝像機流節點的輸出映射到應用程序代碼節點的輸入。這些名字video_invideo_out是在節點包的界面中定義的。

範例 圖形 .json-邊
"edges": [ { "producer": "camera_node.video_out", "consumer": "code_node.video_in" }, { "producer": "code_node.video_out", "consumer": "output_node.video_in" },

在您的應用程序代碼中,您可以使用inputsoutputs屬性從輸入串流獲取圖像,並將圖像發送到輸出串流。

範例 application.py — 視頻輸入和輸出
def process_streams(self): """Processes one frame of video from one or more video streams.""" frame_start = time.time() self.frame_num += 1 logger.debug(self.frame_num) # Loop through attached video streams streams = self.inputs.video_in.get() for stream in streams: self.process_media(stream) ... self.outputs.video_out.put(streams)

抽象節點

在應用程序清單中,抽象節點是指由 AWS Panorama 定義的包,您可以在應用程序清單中用作佔位符。AWS Panorama 提供兩種類型的抽象節點。

  • 相機串流— 選擇應用程序在部署期間使用的攝像機流。

    套件名稱panorama::abstract_rtsp_media_source

    介面名稱rtsp_v1_interface

  • HDMI 輸出— 表示應用程序輸出視頻。

    套件名稱panorama::hdmi_data_sink

    介面名稱hdmi0

以下示例顯示了處理相機流並將視頻輸出到顯示器的應用程序的一組基本軟件包、節點和邊緣。攝像機節點,它使用abstract_rtsp_media_source軟件包,可以接受多個攝像機流作為輸入。輸出節點,它引用hdmi_data_sink,允許應用程序代碼訪問從裝置的 HDMI 端口輸出的視頻緩衝區。

範例 圖形 .json — 抽象節點
{ "nodeGraph": { "envelopeVersion": "2021-01-01", "packages": [ { "name": "123456789012::SAMPLE_CODE", "version": "1.0" }, { "name": "123456789012::SQUEEZENET_PYTORCH_V1", "version": "1.0" }, { "name": "panorama::abstract_rtsp_media_source", "version": "1.0" }, { "name": "panorama::hdmi_data_sink", "version": "1.0" } ], "nodes": [ { "name": "camera_node", "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface", "overridable": true, "decorator": { "title": "IP camera", "description": "Choose a camera stream." } }, { "name": "output_node", "interface": "panorama::hdmi_data_sink.hdmi0" } ], "edges": [ { "producer": "camera_node.video_out", "consumer": "code_node.video_in" }, { "producer": "code_node.video_out", "consumer": "output_node.video_in" } ] } }