Module for ofxModule that allows easy control over libgphoto supported cameras using ofxGphoto.
Compatible with openFrameworks 0.11.0+ and Linux.
Generate all project files using the openFrameworks Project Generator.
Manually add linker flags -lgphoto2 and -lgphoto2_port.
Have a look at the sample project to get started directly and have a small explanation here.
The module can be configured in the settings.json.
{
"Gphoto":{
"deviceName": "Fujifilm XT-2",
"mirrorX":true,
"mirrorY":true,
"streamingMethod": "both",
"rotate":90
}
}| property | type | description |
|---|---|---|
| deviceId | int | sets device ID (search order of gphoto, can change on restart) |
| deviceName | string | name of the device as shoen in device list |
| mirrorX | boolean | mirrors Image on x-axis |
| mirrorY | boolean | mirrors Image on y-axis |
| rotate | int | rotate the image either 0, 90, 180 or 270 |
| streamingMethod | string | transmit type of images to other modules either "texture","pixels" or "both" |
Activate/ deactivate live-view:
ofJson j;
j["value"] = false; // activate the module, for deactivate use true
notifyEvent("setIdle", j);Take photo:
notifyEvent("capture");Depending of the selected streaming method you receive the cam image as ofTexture or ofPixels. A photo arrives at the address photo, other messages represent the current live view.
void Presenter::proceedModuleEvent(ModuleEvent& e) {
// update the cam image
if (e.type == ModuleEvent::MODULE_EVENT_TEXTURE) {
if (e.address == "photo") {
highResTexture = e.texture;
}else{
lowResTexture = e.texture;
}
else camTexture = e.texture;
}else if (e.type == ModuleEvent::MODULE_EVENT_PIXELS) {
if (e.address == "photo") {
highResImage.setFromPixels(*e.pixels);
} else {
lowResImage.setFromPixels(*e.pixels);
}
}
}