Announcing edsdk-processing (Canon SLR Plugin for Windows)

hello everyone!

I'm very happy to let everyone know that earlier this year I was sponsored by Kasuga Studio ( to bring my edsdk4j library over to processing land, while letting me open source all development.

This means it should now be quite simple for everyone to control their canon slr directly from processing (so far it works only on Windows though). It allows you to take images, adjust iso, aperture and exposure, capture the live view feed and many other things.

A quick example in processing's loop-less mode:

import edsdk.processing.*; 
size( 800, 600 ); 
ProcessingCanonCamera cam = new ProcessingCanonCamera( this ); 
PImage img = loadImage( cam.shoot()[0].toString() ); 
image( img, 0, 0, width, height ); 

More Info:


  • Registered, now awaiting approval by Canon Europe.

  • So I got approved and now I have found some time to test the libary with a Canon EOS 600D. The library works for me. I can take images with the Basic example. However I cannot get the LiveView to work as shown in the Hello example. The sketch runs, but the camera image remains black. The error message that is given is:

    Could not start live view (set image mode) (error 129: EDS_ERR_DEVICE_BUSY - Device Busy)

    I would really like to use the LiveView mode. Do you have any suggestions?

  • hey!

    @amnon can you try some generic stuff: take the battery out of the camera, unplug it from usb, put the battery back in and plug into a different usb port. also make sure you have no other software connecting to your camera. did that help?

    best, h,-

  • edited August 2014

    Thanks for your reply @kritzikratzi. Been trying some things and got some good news! Found the problem and the solution. This error occurs when you have the camera set to the movie mode. The solution is to set the camera to an image mode such as [P] (in retrospect: the error message did give a hint about this, but not clearly enough apparantly). Anyway, now I am able to use LiveView mode, excellent!

    The 600D supports 1920 x 1080 video recording, but I am only getting 1056 x 704 from the LiveView mode. Is this is a limitation of the LiveView-mode or can I set the resolution somewhere? Obviously I'd like to get as hi-res as possible...

  • hey!

    ah, of course... that makes sense! :) afaik you can't stream live video from the camera. if possible at all you can you do it with the hdmi output on the camera and a capture box. the live view resolution you get now is as good as it gets.

    best, hansi.

  • All right, thanks. For future reference, the maximum live view resolutions for different camera models can be found here:

  • @amnon thx, very useful!

  • Any chance of a Mac or Linux friendly version?

  • @bilmor linux no. mac, maybe. but i'm very busy now.

  • ps. the edsdk only exists for mac and windows, so a linux version would have to be based on wine, which i imagine would be a major pita. i had a mac version working for a while, but it was always either windows or mac (there are some differences in the native calling conventions). i guess it's possible to have them both work with the same java code base, but it requires some fiddling which i currently don't have enough time for. (also i'm working mostly in openframeworks those days)

  • pps. if you need something similar for linux you would have to look into libgphoto2, which is the only alternative i know of. in my experience it isn't very stable though and not as powerful as canon's own sdk (on the upside: it runs on pretty much any OS and supports a TON of cameras).

  • Hi @kritzikratzi

    I currently having an issue with import edsdk.utils.CanonConstants.*; Every thing else seems to import fine, and I have control over shooting with the canon, but I am returned the error: No library found for edsdk.utils.CanonConstants

    Any thoughts?



  • edited January 2015
  • edited June 2015

    Hi @kritzikratzi, is there anyway I can get the camera to auto focus while using the "take image" command?

    I've used the useAutoFocus() command, and I get a console message "Begin setting camera to auto focus DONE!", but the camera still does not autofocus before taking the image.

    Also, I've noticed there is a "cam.getAvailableAutoFocusModes()" command but no command to set the AutoFocusMode.

    What is the right way to make my camera autofocus before taking an image?


    I just used the drive lens function to handle the focusing...good enough for me :)

Sign In or Register to comment.