Tirando fotos a partir do Windows C # Canon SDK vs PTP ou MTP

votos
8

Estou esperando para receber alguma orientação geral sobre a realização de uma meta aparentemente simples. Eu tenho uma câmera DSLR (Canon EOS 50D) e precisa escrever um aplicativo que irá dizer a câmera para tirar uma foto. Eu também preciso transferir a imagem para o computador e, possivelmente, excluí-lo do armazenamento da câmera. Um bônus seria para obter uma pré-visualização ao vivo da câmera em meu aplicativo. Meu ambiente será Windows (XP Pro ou Vista Enterprise) e .Net 3.5 (C #).

Eu fiz alguma pesquisa e encontrou um par de opções. Um eu sei que vai funcionar, mas me limita a usar apenas câmeras da Canon no futuro. Eu encontrei e baixado um SDK da Canon que oferece um monte de esta funcionalidade. Eu olhei sobre o SDK e enquanto é extensa e escrito em C que tem C # wrappers que vai acelerar o desenvolvimento de um bit.

Outra opção que eu encontrei é chamado de Windows dispositivos portáteis. Aparentemente, é uma API que vai falar com dispositivos que implementam padrões PTP e PMP. É baseado COM e, tanto quanto eu posso dizer que não tem wrappers .Net. Esta não é, contudo, uma rolha de show. Eu poderia P / chamar a funcionalidade que eu preciso ou escrever uma DLL C ++ gerenciado para usar no meu aplicativo para conversar com a câmera.

Estou à procura de alguém com experiência com WPD para me dar ponteiros. Eu já percorreu a documentação e visto referências a transferência de imagens e apagar imagens. Não tenho, porém, menção visto de comandos para tirar uma foto, obter uma imagem de visualização, ou dizer / auto-focus foco.

Publicado 10/11/2009 em 19:59
fonte usuário
Em outras línguas...                            


5 respostas

votos
2

tentar o meu Eos Framework: https://github.com/esskar/Canon.Eos.Framework

IMHO é uma alternativa melhor, em seguida, o arquivo .cs que vem com o SDK.

Respondeu 06/02/2012 em 21:52
fonte usuário

votos
2

O comentário de TallGanglyGuy está incorreto. ptp lhe permite desencadear novas imagens e exposição a mudança, etc. Algumas câmeras têm firmware que só expõe alguns dos comandos PTP.

PTP suporta controles de dispositivo comuns, como tirar uma foto, para que o usuário pode tirar vantagem da combinação PC / câmera em novas e diferentes maneiras de novo, sem a necessidade de software adicional.

Respondeu 15/08/2011 em 23:37
fonte usuário

votos
2

A api WPD fornece a WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE comando

Não tenho a certeza se a sua câmara suporta-lo, mas ele deve ser simples o suficiente para descobrir. Se você pode obter o "wpdinfo" ferramenta a partir do kit de desenvolvimento de motorista e iniciá-lo com sua câmera ligada, em seguida, enviá-lo um comando WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS e ver se ele suporta o comando captura de imagem. Se assim for, então você pode dar um que tente.

Respondeu 22/01/2010 em 13:07
fonte usuário

votos
2

PTP e MTP são os dois protocolos para a transferência de arquivos a partir de uma câmera fotográfica digital (DSC). Os protocolos fornecem nenhuma funcionalidade para desencadear novas imagens, ou a criação de controle de exposição. Você vai ser preso usando o SDK específico câmera. Se você quiser suporte a múltiplos fornecedores Nikon tem um SDK que fornece suporte semelhante como a Canon SDK para suas câmeras.

Mais informações sobre PTP e MTP pode ser encontrada aqui: http://en.wikipedia.org/wiki/Picture_Transfer_Protocol e http://en.wikipedia.org/wiki/Media_Transfer_Protocol

EDITAR

Eu esqueci de mencionar que WIA pode ser interessante para você, assumindo o motorista de sua câmera fornece uma interface WIA.

Respondeu 11/11/2009 em 00:24
fonte usuário

votos
0

Isto é realmente genérico, mas pode ajudar.

Eu tive que escrever um aplicativo que usou dois scanners de código de barras diferentes de dois fornecedores diferentes, com diferentes SDK do. Eu criei uma interface que define os métodos e eventos que eu queria codificar para, em seguida, escreveu as classes adaptadoras que implementaram a minha interface.

Isso funcionou bem no meu caso, e mudar de um para o outro foi muito transparente. Se você tomou a mesma abordagem, você não estaria totalmente dependente de um SDK.

Respondeu 13/11/2009 em 03:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more