¿Cómo obtengo la lectura del medidor de una Canon DSLR conectada mediante programación?

Soy bastante aficionado a la fotografía y tengo que tomar varias fotos de objetos similares en el mismo lugar durante el día. Por lo tanto, uso las bibliotecas de software de las utilidades de Canon para escribir un programa C# y lo hago con mi computadora.

Tengo una Canon EOS 1100D y sé cómo configurar las propiedades en el modo manual de la cámara con mi computadora, pero quiero ajustar dinámicamente todos los parámetros de medición que cambiarían en diferentes situaciones de luz en mi programa.

¿Cómo puedo obtener y configurar todos los parámetros de medición? Puedo configurar ISO y enfocar en modo automático, pero necesito todos los parámetros de medición de la cámara.

Lo siento, pero tienes que dar más detalles sobre lo que quieres lograr aquí. ¿Quieres usar el modo automático o manual? En automático, tiene un control casi nulo de la configuración, atado o no.
Uso el modo de conexión y controlo la cámara con mi programa (computadora); por lo tanto, debe configurar la cámara en modo manual . Pero necesito obtener parámetros de medición de la cámara.
Hay varias formas de abordar el problema de cambiar los niveles de luz. La forma en que funcionaría mejor depende de cuánta diferencia haya entre la luz más brillante y la más tenue en los momentos en que desea que el programa tome una foto.
Como dije, tengo que tomar fotos durante el día; y tengo problema con todas las fotos que se tomaron al atardecer. son demasiado brillantes. cuando configuro manualmente el televisor de 1/15 a 1/40, el problema se resolverá. Pero quiero que el programa tome esta decisión de la misma manera que la cámara cuando está en modo automático . Quiero hacer esto con teathering.
Aunque sigo pensando que las preguntas de programación deberían ir a la página de desbordamiento de pila . Aquí hay una biblioteca que encontré que tiene las funciones que puede estar buscando. gFoto . No publiqué esto como respuesta porque no tengo una cámara Canon y no estoy familiarizado con la Biblioteca.
Todavía no está muy claro lo que estás preguntando. Soy fotógrafo y desarrollador, pero no tengo idea de lo que está tratando de lograr aquí. Dice que sabe cómo ajustar las propiedades en modo manual, pero luego dice que quiere saber cómo ajustar los parámetros. Luego hablas de lo que puedes cambiar en auto. ¿Qué está tratando de lograr realmente y qué parámetros específicos necesita ajustar?
@AJHenderson: antes que nada, muchas gracias. Cuando dije que sé cómo ajustar las propiedades en modo manual, quiero decir que sé cómo configurar, por ejemplo, TV en 1/15 o ISO en 100. Pero lo que no sé es cómo puedo encontrar el mejor valor de estos parámetros. para cada foto. este es exactamente el trabajo de la cámara cuando está en modo automático : produzca el mejor valor y configúrelos, luego tome la foto.
Ahhh Por lo tanto, no desea ajustar la medición, desea leerla y luego configurar manualmente los parámetros de exposición (velocidad de obturación, apertura, ISO) una vez que lo sepa.
Dicho esto, en mi opinión, eso pone esto directamente fuera de tema como una pregunta de programación.
Esta pregunta parece estar fuera de tema porque se trata de programación en lugar de fotografía.
@aisa: Haga su pregunta más relacionada con la fotografía, y la gente dejará de decirle que esta pregunta está fuera de tema (que es tal cual). :-) Sin embargo, una pregunta interesante sería: si no puede poner la cámara en automático, ¿cómo calcularía los parámetros de una sesión de prueba, que es un enfoque por cierto? Capture una imagen de prueba, calcule la luminosidad/el contraste/el balance de color, lo que sea, y realice los ajustes manualmente (mediante programación). Después de todo, "auto" hace lo mismo, excepto que tiene una base de datos para averiguar qué estás tomando y crea una estrategia.
@mattdm: también hice mis preguntas en StackOverFlow, pero aparentemente nadie sabe nada sobre mi problema. Sin comentarios, sin respuesta.
¿Su programa solo funciona con la cámara en modo "M"? Como ejemplo, cuando tome las fotos del atardecer, configure la cámara en modo Tv, en lugar de "M" (si se ajusta a su código). De lo contrario, si tiene que estar en modo "M", la cámara no medirá.
Desafortunadamente, tiene que estar en modo Manual. ¿Hay alguna forma de llamar a la función de medición de la cámara manualmente (por código) y obligar a la cámara a medir y luego obtener los parámetros?

Respuestas (4)

No tengo acceso al SDK de Canon para saber qué es posible o no, pero pensé en señalar que también puedes usar libgphoto para interactuar con una cámara conectada. Le permite leer y escribir una variedad de configuraciones de la cámara. En la 1100D esto incluye ISO, apertura y velocidad de obturación (y mucho más), por lo que debería ser suficiente.

Incluso puede escribir esto usando Gphoto2 (que obviamente se ejecuta en libgphoto), una utilidad de línea de comandos que le permite obtener/establecer información básica como esta, sin tener que llamar al código C directamente desde la biblioteca.

Lo más probable es que esto no funcione al mismo tiempo que EOS Utility o en paralelo con la biblioteca de software de Canon, por lo que es uno u otro.

Su pregunta está relacionada con la programación, por lo que solo puedo proporcionarle un enlace si no puede encontrar otras formas. (Y esta respuesta está relacionada con la fotografía, por cierto, a diferencia de mi comentario).

Hay un truco llamado CHDK que permite un control mucho más preciso sobre su cámara, y lo más probable es que pueda conectar toda la configuración interna y los valores de medición o podría preguntarle a esa gente sobre esto.

Eche un vistazo, tal vez intente eso, y si lo hizo, háganos saber si funcionó (soy un ex fanático de Canon, actualmente en Nikons, pero realmente extraño CHDK :-)).

EDITAR: otra forma como solución alternativa: haga una foto de prueba, descárguela y verifique los datos EXIF, hay muchos parámetros guardados allí.

¿La biblioteca API no proporciona esta información? extraño para una API oficial.

otra forma, si no puede usar un método de la API, es tomar una foto y leer la información del EXIF. La imagen se puede tomar con una resolución/calidad más baja (para una transferencia/tratamiento rápido)

Para agregar un poco más de detalles que las respuestas anteriores: en mi Canon Rebel XSi, las fotos que tomo tienen una etiqueta MeasuredEVy MeasuredEV2en los datos EXIF. Desafortunadamente, no he podido encontrar una manera de obtener esta información antes de tomar una foto, pero para mis propósitos (tomando un lapso de tiempo) es aceptable usar el valor medido de la última foto tomada.

(Tampoco sé cuál es la diferencia entre las dos etiquetas, aparte de que una parece dar un valor más preciso mientras que la otra parece estar redondeada)