Image
18.9.2019 0 Comments

Ako naprogramovať aplikáciu na ovládanie fotoaparátov Canon

Pri bežnom fotografovaní využívame ovládacie prvky na tele fotoaparátu, káblový alebo bezdrôtový ovládač, prípadne mobilné aplikácie od výrobcu fotoaparátu či kamery v smartfóne prepojenom s fotoaparátom cez Wi-Fi. Tieto aplikácie umožňujú na diaľku ovládať rovnaké funkcie, ako keď používate ovládacie prvky na fotoaparáte.

Na väčšinu bežných scenárov s tým vystačíte, no niekedy potrebujete mať aplikačnú logiku vo vlastnej réžii, prípadne potrebujete do riešenia zakomponovať ďalší hardvér. Typický príklad je synchronizácia viacerých fotoaparátov pri snímaní 3D scény alebo zdokumentovanie deja v správnom okamihu, keď sa na presné spustenie expozície dá použiť hardvérový impulz, napríklad z fotobunky a podobne. Inokedy potrebujete zosnímať sériu záberov a meniť v nich parametre mimo rozsahu štandardného bracketingu či iným spôsobom naprogramovať aplikačnú logiku využívajúcu funkcie fotoaparátu alebo kamery.

V prípade fotoaparátov značky Canon to nie je problém. Výrobca poskytuje na tento účel EOS Digital SDK (EDSDK) (Software Development Kit) pre platformy Windows a Mac OS a takisto balík funkcií Camera Control API (CCAPI), ktorý využíva protokol HTTP cez rozhranie Wi-Fi, takže je nezávislý od platformy, na ktorej je implementovaný. V podstate CCAPI podporuje rovnakú funkcionalitu ako EDSDK, ale EDSDK je k dispozícii len pre Windows a Mac OS, zatiaľ čo CCAPI pre širokú paletu operačných systémov vrátane Androidu, iOS či Linuxu.

Aby ste mohli tieto aplikačné rozhrania pre vývojárov stiahnuť, treba vyplniť registračný formulár do komunity vývojárov Canon Digital Imaging Developer Programme (www.didp.canon-europa.com) a Canon vám členstvo musí schváliť. V našom prípade, keď sme ako dôvod uviedli hobby konštrukciu, nebol so schválením žiadny problém, takže nám nič nebránilo integrovať produkty značky Canon do vlastných riešení.

EOS Digital SDK

S využitím funkcií v EDSDK možno vytvárať aplikácie na ovládanie fotoaparátov Canon z produktových rodín EOS a PowerShot vrátane integrácie do komplexnejšieho riešenia. EDSDK poskytuje funkcie na konfiguráciu nastavení fotoaparátu, na ovládanie snímania a na prenos snímok z fotoaparátu. Ovládanie jednotlivých funkcií je poskytované formou aplikačného programovacieho rozhrania (API), ktoré sa volajú z aplikácie bežiacej na hostiteľskom počítači spojenom s kamerou. Súčasťou EDSDK sú aj príklady vzorových aplikácií. Jediné obmedzenie je v tom, že fotoaparát musí byť k počítaču s aplikáciou pripojený káblom USB.

Problém napokon nebol ani s vytvorením aplikácie, aj keď to spočiatku ani zďaleka nevyzeralo jednoduché. Dokumentácia má 150 strán a podrobne opisuje inštaláciu a množstvo procedúr tvoriacich rozhranie na ovládanie fotoaparátov. Predbežne odporúčame pozrieť si len zoznam podporovaných modelov fotoaparátov a tí hĺbavejší čitatelia si môžu preštudovať aj princíp fungovania. Zoznam má dve husto popísané strany, takže ak máte novší model od Canonu, pravdepodobnosť, že je podporovaný aj váš fotoaparát, je veľmi vysoká. V najnovšej verzii EDSDK chýba podpora spracovania záberov vo formáte RAW. Posledná verzia, ktorá túto funkcionalitu podporovala, bola EDSDK 3.9.0.

Súčasťou dokumentácie je aj niekoľko vzorových príkladov, presnejšie fragmentov kódu. Pre Windows sú príklady v programovacích jazykoch C++ a C# a pre platformu Mac OS zasa v programovacích jazykoch Objective-C a Swift, takže skúsenejší programátor sa v tom rýchlo zorientuje. Problém nebudú mať ani mierne pokročilí programátori alebo ľudia programujúci pre iné platformy, ale pre nich odporúčame iný postup. Mali by si nájsť vhodný kompletný príklad na niektorom z komunitných vývojárskych portálov, napríklad stackoverflow.com alebo codeproject.com, vyskúšať ho, naštudovať, ako pracujú jednotlivé funkcie, a následne podľa takéhoto výučbového projektu si vytvoriť vlastnú aplikáciu.

V aplikácii treba najskôr zistiť, či je pripojený vhodný fotoaparát, a inicializovať komunikáciu cez príslušný port USB. Potom vyskúšajte funkcie, ktoré potrebujete, a poskladajte z nich aplikačnú logiku. EDSDK som otestoval pri ovládaní bezzrkadlovky Canon EOS R. Po chvíli experimentovania som bezzrkadlovku prepol na manuálny režim, pretože potom sa z aplikácie bez obmedzenia dajú nastavovať všetky parametre. Môžete využiť aj automatický režim, prípadne priority clony či času, ale potom môžete nastavovať len niektoré veličiny, a ak sa budete snažiť nastaviť parameter, ktorého nastavovanie v danom režime nemá logiku, napríklad ak v režime priority clony budete chcieť nastavovať čas expozície, dôjde k výnimke. Preto pri ladení treba tieto kombinácie otestovať a výnimky dôsledne ošetriť.

EDSDK umožňuje súčasne komunikovať cez rozhranie USB len s jedným fotoaparátom, takže ak chcete pracovať s viacerými fotoaparátmi pripojenými na viacerých portoch USB, musíte najskôr ukončiť pripojenie cez port, na ktorom bol pripojený fotoaparát, ktorý aplikácia aktuálne obsluhovala, a inicializovať pripojenie iného fotoaparátu, pripojeného cez iný port. Z tohto princípu vyplýva jedno praktické obmedzenie – nemôžete súčasne aktivovať snímanie viacerých fotoaparátov. Ak potrebujete takéto riešenie napríklad na 3D snímky poskladané z viacerých záberov, musíte si pomôcť inak, povedzme pripojiť fotoaparáty cez konektory určené pre káblové spúšte k vhodnej viacportovej mikrokontrolérovej doske, napríklad k Arduinu. Stačí kúpiť vhodný konektor alebo v prípade netypických konektorov káblový diaľkový ovládač, rozobrať ho a káblik pripojiť na vhodný spínací člen riadiacej jednotky. Pripojenie k portom riadiacej dosky môžete realizovať pomocou vhodných optočlenov, prípadne relé. Vaša aplikácia potom vydá povel, aby Ardunino súčasne zoplo kontakty káblových spúští. To vtedy, ak máte objektívy všetkých fotoaparátov zaostrené fixne a clonu nastavenú tak, aby ste dosiahli požadovanú hĺbku ostrosti. Ak využívate automatické zaostrovanie, potrebujete pre každý fotoaparát dva porty pripojené na dva „živé“ kontakty káblovej spúšte. Zopnutím prvého kontaktu, ktorý je ekvivalentom stlačenia spúšte do medzipolohy, sa aktivuje automatické zaostrenie. Následne s dostatočným oneskorením, aby mali všetky fotoaparáty dostatok času zaostriť, exponujete. Potom je už spravidla dosť času, aby aplikácia postupným pripájaním sa k portom USB, na ktorých sú pripojené fotoaparáty, z nich stiahla zosnímané zábery.


Ovládanie tandemu fotoaparátov pomocou mikropočítača Raspberry Pi

Camera Control API

Toto aplikačné rozhranie využíva na komunikáciu protokol HTTP cez Wi-Fi, takže sa hodí napríklad pre aplikácie na mobilných platformách. Stačí, aby akákoľvek platforma podporovala IP konektivitu a už spomínaný protokol HTTP. Pomocou funkcií integrovaných v CCAPI môže hostiteľská aplikácia konfigurovať nastavenia fotoaparátu, získavať obraz v priamom prenose, aktivovať spúšť a prenášať obrázky z fotoaparátu. V tomto prípade nie sú potrebné žiadne špeciálne knižnice na komunikáciu s fotoaparátom. Stačí na fotoaparáte povoliť CCAPI a fotoaparát odpovedá na požiadavky aplikácie. Konektivita cez USB nie je podporovaná nielen v zmysle, že ju nemôže využívať CCAPI, ale port USB je pri použití komunikácie s aplikáciou cez Wi-Fi zablokovaný, takže nemožno ovládať funkcie fotoaparátu súčasne cez CCAPI a cez EDSDK. 

Dobrá informácia je, že CCAPI umožňuje z jedného zariadenia, či už je to počítač, tablet, alebo smartfón, ovládať viac pripojených fotoaparátov súčasne. Stačí, ak zariadenie, na ktorom beží aplikácia, otvorí paralelne viac pripojení HTTP. V čase písania článku CCAPI podporovala len zrkadlovka EOS 250D, bezzrkadlovka EOS RP a fotoaparáty PowerShot G5 X Mark II, PowerShot G7 X Mark III a PowerShot SX70 HS. Paralelné ovládanie som vyskúšal s bezzrkadlovkou EOS RP a superzoomom PowerShot SX70 HS. 

Položka Camera Control API sa nastavuje v menu Settings -> Wireless communication setting -> Wi-Fi Settings. Skontrolujte, či je povolená komunikácia cez Wi-Fi a rolovaním nájdite položku Camera Control API. Na prístroji, na ktorom funkcionalita CCAPI nebola aktivovaná, sa vám to nepodarí. Potrebujete si zo spomenutého vývojárskeho portálu stiahnuť nástroj CCAPI Activation Tool. Pripojíte fotoaparát kompatibilný s CCAPI k počítaču platformy Windows alebo Mac OS pomocou USB a spustíte aktivačný nástroj. Po úspešnej aktivácii pribudne do menu ponuka Camera Control API. V nej pripojíte fotoaparát k sieti Wi-Fi. K rovnakej sieti musí byť pripojené aj zariadenie, z ktorého budete fotoaparáty ovládať. Potom sa vám zobrazí URL adresa fotoaparátu. Po zadaní tejto adresy do prehliadača sa vo formáte JSON zobrazí zoznam funkcií vrátane URL adries. Teraz môžete začať vyvíjať webovú alebo androidovú aplikáciu, ktorá bude posielať do pripojeného fotoaparátu (prípadne fotoaparátov) príkazy. Opis parametrov je v prehľadnej dokumentácii. Súčasťou dokumentácie je aj zdrojový kód príkladu aplikácie pre Android.

Zdrojový kód v programovacom jazyku Python na aktivovanie spúšte

# requests library 

import requests 

# príkaz 

CCAPI_URL = "http://192.168.0.146:8080/ccapi/ver100/shooting/control/shutterbutton"


# parametre 

data = {'af': True} 

headers = {'Content-type': 'application/json'}

r = requests.post(CCAPI_URL, json=data, headers=headers)


# text vrátený kamerou 

r_url = r.text 

print("Odpoved:%s"%r_url)

 

 

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

q

Žiadne komentáre

Vyhľadávanie

PC forum button

Najnovšie videá