Pregunta

Tengo la esperanza de recibir alguna orientación general sobre el cumplimiento de un objetivo aparentemente simple. Tengo una cámara réflex digital (Canon EOS 50D) y la necesidad de escribir una aplicación que le dirá a la cámara para tomar una foto. También necesito para transferir la imagen al ordenador y, posiblemente, eliminarla de almacenamiento de la cámara. Una ventaja sería la de obtener una vista previa en vivo de la cámara en mi solicitud. Mi entorno será de Windows (ya sea XP Pro o Vista Enterprise) y .Net 3.5 (C #).

He hecho algunas investigaciones y encontró un par de opciones. Una sé que van a trabajar, pero yo sólo permite utilizar las cámaras de Canon en el futuro. He encontrado y descargado un SDK de Canon que proporciona una gran cantidad de esta funcionalidad. He mirado por encima del SDK y aunque es extensa y escrito en C que sí tiene C # envoltorios que acelerarán el desarrollo un poco.

Otra opción que he encontrado se llama dispositivos portátiles de Windows. Al parecer, se trata de una API que hablar con los dispositivos que implementan estándares PTP y MTP. Se basa COM y por lo que yo puedo decir que no tiene envolturas .Net. Esto no es sin embargo un tapón de la demostración. Podría P / Invoke la funcionalidad que necesito o escribir un archivo DLL Managed C ++ para utilizar en mi aplicación para hablar a la cámara.

Busco a alguien con experiencia con WPD darme punteros. He examinaba la documentación y visto referencias a la transferencia de imágenes y borrado de imágenes. No tengo, sin embargo, visto mención de comandos para hacer una foto, obtener una imagen de vista previa, ni qué decir de enfoque / enfoque automático.

¿Fue útil?

Solución

La API WPD ofrece la WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE comando

No estoy seguro de si su cámara es compatible con ella, pero debe ser lo suficientemente simple para averiguar. Si usted puede conseguir la función "wpdinfo" del kit de desarrollo de pilotos y empezar con su cámara conectada a continuación, enviar un comando WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS y ver si es compatible con el comando de captura de imagen fija. Si es así, usted podría dar que un intento.

Otros consejos

PTP y PMP son los dos protocolos para la transferencia de archivos desde una cámara digital (DSC). Los protocolos proporcionan ninguna funcionalidad para la activación de nuevas imágenes, o la creación de control de exposición. Se le pegado con el SDK específica de la cámara. Si desea soporte de múltiples proveedores Nikon tiene un SDK que proporciona un apoyo similar como el SDK de Canon para sus cámaras.

Más información sobre el PTP y MTP se puede encontrar aquí: http://en.wikipedia.org/wiki/Picture_Transfer_Protocol y http://en.wikipedia.org/wiki/Media_Transfer_Protocol

editar

Me olvidé de mencionar que WIA puede ser interesante para usted, suponiendo que el controlador de la cámara proporciona una interfaz WIA.

El comentario de TallGanglyGuy es incorrecta. PTP sí le permite desencadenar nuevas imágenes y cambiar la exposición, etc. Algunas cámaras tienen un firmware que sólo expone algunos de los comandos PTP.

  

PTP compatible con los controles de dispositivos comunes, tales como la toma de una imagen, de modo que   el usuario podría tomar ventaja de la combinación PC / cámara en nuevo y   diferentes maneras De nuevo, sin necesidad de software adicional.

intentar mi Eos Marco: https://github.com/esskar/Canon.Eos.Framework

En mi humilde opinión es una mejor alternativa a continuación, el archivo .cs que viene con el SDK.

Esto es muy genérico, pero puede ayudar.

que tenía que escribir una aplicación que utiliza dos escáneres de códigos de barras diferentes a partir de dos proveedores diferentes con diferentes SDK. He creado una interfaz que define los métodos y eventos que quería codificar, y luego escribió clases de adaptador que implementaron mi interfaz.

Esto funcionó bien en mi caso, y pasar de una a otra era bastante transparente. Si tomó el mismo enfoque, que no sería totalmente dependiente de un SDK.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top