簡體   English   中英

使用python在視頻流上繪制邊界框

[英]Drawing bounding boxes on video streams using python

我正在使用 AWS Kinesis Video Streams 將我的相機流式傳輸到雲端。 然后,我使用 Sagemaker 使用 AWS Lambda 對其進行分析,它返回視頻流中的對象名稱及其坐標。

現在,我想改進在 kinesis 視頻流上創建邊界框的 Lambda 代碼 (python)。

我的問題是: 1. 我如何抓取流? 2. 如何使用坐標重疊邊界框? 我使用 cv2 嗎? 3. 如何將流上傳到新流?

我看到了一個代碼,但在 Java 中。 這是一個鏈接

這是我解決您問題的方法。

1.我如何抓取流?

您可以使用 aws boto3 庫獲取使用 GET_MEDIA api 的視頻幀或使用 KinesisVideoArchivedmedia 的流獲取 HLS 或 DASH 流 url,這似乎可以解決您的問題,但 GET_MEDIA api 的開銷較少。 boto3 文檔

2. 如何使用坐標重疊邊界框? 我使用 cv2 嗎?

您可以使用任何視頻渲染庫(例如 pyav 或 opencv)來執行此操作。 使用 opencv 執行此操作的代碼在 Internet 上很容易獲得,但您還需要考慮其他挑戰,例如 AWS Lambda 限制、可用邊界框與幀速率協調的一致性(您需要至少 3-4fps 的對象檢測和 15fps 的視頻使其看起來實時)

3. 如何將流上傳到新流?

如果您想將流上傳回 Kinesis Video Stream,這是非常困難的,而且我認為 Lambdas 不足以完成所有必需的處理。 您可以為此目的使用 ec2 實例。 另一種選擇是將渲染的視頻保存到 s3 並使用視頻轉碼服務(如 AWS Mediaconvert,或構建您自己的)將渲染的視頻轉碼為 HLS 或 DASH 流。 保存在 s3 上的 HLS 或 DASH 流可以使用內容交付網絡(例如 AWS Cloudfront)進行流式傳輸。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM