微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nvgstcapture 与 nvarguscamerasrc

如何解决nvgstcapture 与 nvarguscamerasrc

我为我的 OpenCV 项目购买了 CSI 摄像头 IMX219。

当我运行以下命令时,实时显示帧似乎没有任何延迟。

$ nvgstcapture-1.0 -m 2 --prev-res 4

但是,当我使用以下管道运行简单的 python 代码时,捕获速度非常慢,

pipeline = 'nvarguscamerasrc !  video/x-raw(memory:NVMM),width=1920,height=1080,format=NV12,framerate=30/1 ! nvvidconv flip-method=0 ! video/x-raw,format=BGRx ! videoconvert ! video/x-raw,format=BGR ! appsink'

cap = cv2.VideoCapture(pipeline,cv2.CAP_GSTREAMER)

如果我在 Opencv 中需要 1920x1080、30fps VideoCapture() 我该怎么办?

感谢您的帮助!

解决方法

这是我在 NVIDIA 开发者论坛上提出的类似问题:https://forums.developer.nvidia.com/t/optimizing-opencv-gstreamer-with-mipi-and-usb-uvc-cameras/123665/27

基本上,问题在于您在 OpenCV 的 gstreamer 管道中失去了很多硬件加速。特别是 videoconvert 在管道中非常缓慢。由于我的应用程序的性质,我使用 nvvidconv 从 BGRx 转换为 I420。 OpenCV 不能处理 BGRx,但它可以处理 I420,我将其转换为 BGR 以便在我的应用程序的后面部分进行处理。 appsink 在他们的设备上也很慢,而且你没有其他选择接收器。

如果您需要恒定的实时帧,我建议您使用 libargus API,因为它可能具有 NVIDIA 提供的最高性能并针对其硬件进行了优化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。