繁体   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