I am trying to build a fancy still camera with multiple cameras that take a picture at the exact same time. I then put all those frames into a single animated gif for a nice 3D wiggle effect. It's a bit like bullet time, but for still images. (for an example explained with cats, see http://fuzzywobble.com/images/catwiggle.gif)

courtesy of http://fuzzywobble.com/images/catwiggle.gif

So, the questions are:

(How) can I use multiple usb cameras to capture just single still images. I only want stills, not video.

How can I sync the capture time as closely as possible?

How can I set the exposure parameters of the camera. All cameras should use the same params.

Another option would be multiple pis with the pi camera, networked together. I would really want to avoid that though, since that means a lot more hardware to worry about, and its also not that portable. So if possible, I would want to restrict this project to a single pi, a usb hub, usb cameras and a large battery.

thanks! Simon

  • 1
    USB is a bad choice for synchronised anything. The best suggestion I'd have (presuming you can edit after the fact) would be to record a short, approximately synchronised, video clip with each of your cameras and incorporate some kind of clapper board signal (stroboscope, flash, etc.). Then 'all' you need to do is locate the clapper in each clip, isolate the relevant frames and recombine them into a video using something like ffmpeg. Time consuming and requires manual intervention, but I think it's your best bet.
    – goobering
    Commented Dec 6, 2016 at 15:35
  • Cats have taken over the internet. Lol. That is really an interesting, almost 3D effect. Commented Oct 15, 2017 at 17:45
  • +1 for the inclusion of a cat GIF :-)
    – uhoh
    Commented Nov 15, 2020 at 1:21

1 Answer 1


I have been working on something like this for a few months now. The two options I have tried are:

  1. Using gphoto2 it is possible to connect multiple compatible still cameras through usb and control them with the libgphoto2 library (via the API or using the command line). In the case of my setup using just two Nikon D50 DSLR cameras and the C++ API I struggled to get the cameras to reliably capture at the same time.
  2. Multiple Raspberry Pis each with the Pi Camera V2. This is my current preferred option using a master Raspberry Pi board controlling the multiple slave Raspberry Pi board/camera modules. The cameras can all be reliably triggered simultaneously by the master sending a signal via GPIO to each of the listening slaves. The captured images are all retrieved by the master from the slaves over a network. As you suggest there is a lot of hardware (and expense) with this arrangement!

Although not directly linked to your question the Create A Wiggle GIF Animation Instructable simplifies the arrangement even further by cutting frames from a single video camera moved in relation to the subject. Perhaps this could be modified using a single still camera taking multiple frames as it is rotated in relation to the scene.

  • Do you have the option #2 working in reality? If so, do you have open source code available for it? I have been exploring similar setup, did experiments with GPIO trigger and sockets for ethernet data transfer but never made it working together.
    – Kozuch
    Commented Apr 12, 2018 at 15:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.