Domanda

Spero di ricevere alcune indicazioni generali sulla realizzazione di un obiettivo apparentemente semplice. Ho una macchina fotografica reflex digitale (Canon EOS 50D) e la necessità di scrivere un'applicazione che vi dirà la fotocamera per scattare una foto. Ho anche bisogno di trasferire l'immagine al computer ed eventualmente eliminarlo dalla memoria della fotocamera. Un bonus sarebbe quella di ottenere un'anteprima in tempo reale dalla telecamera nella mia applicazione. Il mio ambiente sarà Windows (sia XP Pro o Vista Enterprise) e .Net 3.5 (C #).

Ho fatto qualche ricerca e ha trovato un paio di opzioni. Una so funzionerà, ma mi limita ad utilizzare solo fotocamere Canon in futuro. Ho trovato e scaricato uno SDK da Canon, che fornisce un sacco di questa funzionalità. Ho guardato oltre l'SDK e mentre è ampia e scritto in C ha i C # wrapper in grado di accelerare lo sviluppo un po '.

Un'altra opzione che ho trovato è chiamato di Windows Portable Devices. A quanto pare, è un API che parlare con i dispositivi che implementano gli standard PTP e MTP. E 'COM based e, per quanto ne so non ha wrapper NET. Questo non è però un tappo di spettacolo. Potrei P / Invoke la funzionalità ho bisogno o scrivere una DLL Managed C ++ da utilizzare nella mia richiesta di parlare con la macchina fotografica.

Sto cercando qualcuno con esperienza con WPD a darmi indicazioni. Ho scandagliato la documentazione e visto i riferimenti a trasferire le immagini e cancellazione delle immagini. Non ho però visto menzione di comandi per scattare una foto, ottenere un'immagine di anteprima, o dire messa a fuoco / auto-focus.

È stato utile?

Soluzione

L'API WPD fornisce il comando WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE

Non sono sicuro se la vostra macchina fotografica la sostiene, ma dovrebbe essere abbastanza semplice da scoprire. Se è possibile ottenere la funzione "wpdinfo" dal kit di sviluppo conducente e avviarlo con la fotocamera collegata poi inviarlo un comando WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS e vedere se supporta il comando acquisizione di immagini statiche. Se è così allora si potrebbe dare che una prova.

Altri suggerimenti

PTP e MTP sono entrambi i protocolli per il trasferimento di file da una fotocamera digitale (DSC). I protocolli forniscono alcuna funzionalità per innescare nuove immagini o impostazione controllo dell'esposizione. Sarà bloccato utilizzando l'SDK specifica telecamera. Se si desidera che il supporto del fornitore di più Nikon ha uno SDK che fornisce il supporto simile come la Canon SDK per le loro macchine fotografiche.

Più informazioni su PTP e MTP può essere trovato qui: http://en.wikipedia.org/wiki/Picture_Transfer_Protocol e http://en.wikipedia.org/wiki/Media_Transfer_Protocol

Modifica

Ho dimenticato di dire che WIA può essere interessante per te, supponendo che il driver della fotocamera fornisce un'interfaccia WIA.

Il commento da TallGanglyGuy non è corretto. PTP non consente di attivare nuove immagini e modificare l'esposizione, ecc Alcune fotocamere dispongono di firmware che espone solo alcuni dei comandi PTP.

  

PTP supporta i controlli dei dispositivi comuni, come ad esempio di scattare una foto, in modo che   l'utente potrebbe sfruttare la combinazione di PC / fotocamera in nuovo e   diversi modi di nuovo, senza la necessità di software aggiuntivo.

provare la mia Eos quadro: https://github.com/esskar/Canon.Eos.Framework

IMHO è una migliore alternativa poi il file .cs che viene fornito con l'SDK.

Questo è veramente generico, ma può essere utile.

ho dovuto scrivere un'applicazione che utilizza due diversi scanner di codici a barre da due fornitori diversi con differenti SDK. Ho creato un'interfaccia che definisce i metodi e gli eventi che ho voluto codificare per, e poi scrisse classi adattatore che hanno implementato la mia interfaccia.

Questo ha funzionato bene nel mio caso, e il passaggio da uno all'altro era abbastanza senza soluzione di continuità. Se si ha lo stesso approccio, non sarebbe totalmente dipendente da uno SDK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top