VisionWorks + 2 CSI cameras


I’m trying to stitch two CSI camera (raspberry pi 2 cameras) inputs together to one panorama with VisionWorks, but can only get frames from one of the cameras.
Changing the source URI in nvx_sample_nvgstcamera_capture to “device:///nvcamera?index=0” and “device:///nvcamera?index=1” makes no difference.

I get images from both cameras by changing the sensor-id in gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nv3dsink.

What is a recommended way to connect two camera sources (nvarguscamerasrc backend) with VisionWorks?

Should I try to modify the GStreamerNvCameraFrameSourceImpl to support two camera sources?
If this is a good way, perhaps you have some tips for how to do that.

Side note: I want to use VisionWorks on the Nano because the relevant functions in the released VPI does not run on the Nano GPU. I’ve read that VPI will support the GPU in a future release, but I can’t wait for that.
I hope VPI will have an “easy” way of interfacing to multiple camera sources.


Sorry that VisionWorks doesn’t support argus interface (CSI camera).
For CSI camera, it’s recommended to use Deepstream or MMAPI.


Thanks. I am already using the MMAPI. As I understand, the “device:///nvcamera" use the gstreamer plugin nvarguscamerasrc which is part of the MMAPI.

I am wondering if anybody had tried to expand the “device:///nvcamera" interface to support two cameras simultaneously. Have you had any experience doing this?


Some of our users have updated the visionworks source to their use case directly.
You can find the library here: /usr/share/visionworks/sources/nvxio/src/NVX/FrameSource/GStreamer/

bool GStreamerNvCameraFrameSourceImpl::InitializeGstPipeLine()
    // create nvcamerasrc
    GstElement * nvcamerasrc = gst_element_factory_make("nvarguscamerasrc", nullptr);


Thanks AastaLLL, I will give it try.