/Cinder-EDSDK

CinderBlock for Canon camera control

Primary LanguageC++MIT LicenseMIT

Cinder-EDSDK

Cinder-EDSDK is a CinderBlock to interact with Canon cameras. See Canon's compatibility chart for a list of cameras supported in their EDSDK.

Cinder-EDSDK is configured for Cinder's glNext branch, please use rev 0cfeedc4 for Cinder 0.8.6 support.

FEATURES

Image capture to memory or on-disk, camera keep-alive, simultaneous control of multiple cameras, camera connect and disconnect handling. It does not offer Live View support.

EXAMPLE

void CaptureApp::setup() {
    CameraBrowser::instance()->connectAddedHandler(&CaptureApp::browserDidAddCamera, this);
    CameraBrowser::instance()->start();
}

void CaptureApp::browserDidAddCamera(CameraRef camera) {
    mCamera = camera;
    mCamera->connectFileAddedHandler(&CaptureApp::didAddFile, this);
    EdsError error = mCamera->requestOpenSession();
    if (error == EDS_ERR_OK) {
        mCamera->requestTakePicture();
    }
}

void CaptureApp::didAddFile(CameraRef camera, CameraFileRef file) {
    fs::path destinationFolderPath = expandPath(fs::path("~/Desktop/Captures"));
    camera->requestDownloadFile(file, destinationFolderPath, [this](EdsError error, fs::path outputFilePath) {
        if (error == EDS_ERR_OK) {
            console() << "downloaded image to: " << outputFilePath << endl;
        }
    });
}

INTEGRATION

  1. Apply for EDSDK access from Canon USA or Canon Europa (serving Europe, Africa and The Middle East)
  2. Wait hours / days / weeks / months
  3. Download the EDSDK
  4. Unarchive
  5. Move the EDSDK folder into Cinder-EDSDK/lib
  6. Replace Cinder-EDSDK/lib/EDSDK/Framework/EDSDK.framework with EDSDK vX.Y.Z/EDSDK_64/EDSDK.framework to allow applications to be built x86_64

NOTE - Due to a bug introduced in EDSDK v2.10, the CameraBrowser will only call the camera removed handler for cameras with an open session.

GREETZ