やること
Canonのデジタル一眼レフカメラ(EOSシリーズ)をPythonで制御してみます。コード非掲載の備忘録です。
GUI制御
有線/無線とも公式のEOS Utility一択。機種によって無線対応が異なるので事前に確認すること。
スクリプト制御
大きく分けてCCAPI、EDSDK、サードパーティ製ツールの方針がある。CCAPIとEDSDKは公式に問い合わせてCDを郵送してもらう。
CCAPI
無線LAN接続して、ブラウザやCurlから
http://[IPAddress]:[Port]/ccapi/[Version]/shooting/shutterbotton
で撮影するような使い方。露光時間等の設定もできる。対応機種は少なめ。
なお、CCAPI非対応機種であっても無線LAN接続できればブラウザから
http://[IPAddress]:[Port]/upnp/CameraDevDesc.xml
でカメラの表面上の情報だけは取得できた。設定値の取得や設定はできない。
EDSDK
有線接続してC#、VB、VCで制御する使い方。対応機種は多め。公式Youtube動画を見てサンプルコードの実行はできた。
サードパーティ製ツール
ある程度いろいろなカメラを制御できる汎用ツールとしてgPhoto(Linux系のみ対応)、digiCamControlが挙げられる。それぞれ無線対応かまでは調べていない。
結果
いろいろ試した結果、目的だった「PCと有線接続してPythonで写真撮影」ができた。パラメータとして露光時間、ISO、絞り値等を指定できる。使用した機種はEOS 80D。
バフンウニの殻を撮りました。今はなき貴重なエネループロゴも一緒に。
まとめ
「PC+Webカメラ」「Raspberry Pi+カメラモジュール」といった組み合わせであれば比較的簡単にプログラム撮影できますが、カメラとしての性能には限界があります。今回の方法であれば自在に空間/時間解像度を設定して自動撮影ができます。