如何解决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 举报,一经查实,本站将立刻删除。