Over Christmas I had a bit of spare time on my hands so I decided to get to grips with a few new c++ libraries. I already had some experience with wxWidgets, a cross-platform widgets toolkit, from my Hugin/GSOC endeavours but I wanted to write my own GUI from scratch. Similarly, I’ve played with libgphoto/gPhoto2 a little using Perl scripts to make timelapse movies (of my dog) using my Canon G7. These tools and libraries allow you to control a wide range of cameras via USB from UNIX-like operating systems.
When a quick trawl for Linux software to create timelapse movies came up with nothing, I decide to use these two libraries to write my own. This is what I’ve come up with so far.
I based this project on the notebook example that comes with the wxWidgets source code. It’s fairly easy to add tabs (or pages); at the moment the main one (above) shows the timelapse settings – interval, max time/frames, start, stop and preview capture. There’s also an option to change the number of frames that are taken at each interval – useful if you want to make an HDR timelapse film. The second tab (below) shows the camera settings – ISO, shutter speed, aperture etc. The options that are available here depend on your camera – an SLR will have lots to choose from wheras a point and shoot might have very little if anything.
To start capturing images, you just have to set a few values on the timelapse page (e.g. max frames/run time – though leaving these on zero will make it run until your camera/laptop run out of batteries) – then hit start. You can set the camera up using the second tab or just use the camera’s current values (which are the values that get loaded on initialisation). Hit stop when you’re done and your working directory should be full of images. I then use mencoder or ffmpeg to create the video, though I’m thinking of incorporating this stage into another tab. Other things I may add include some HDR creation/tone mapping functions, a preview tab showing a grid made up of captured images, and some re-size/scaling functions. When I’ve ironed out a few minor bugs and added some new functions I’ll probably start a project at Sourceforge.
The weekend before last my friend Sarah threw a big party in a Chapel she’d hired close to Glastonbury in the west of England. At about 2am I decided it would be a good idea to get my laptop, camera and new Gorillapod out and give the program a test drive. After 5 more hours of partying, here’s what I came up with. With hindsight though, the real success is that none of my gear got trashed!
(Btw that’s me in the rabbit ears)
You can download the code via subversion from here:
Compile with ./configure then make then make install. Good luck!