MacでoFから一眼レフを制御する(libgphoto2+ofxPhoto)

oFから一眼レフを制御するofxPhotoというaddonがあったので使ってみる。制御できるカメラの一覧はこの辺りだけどPTP(Picture Transfer Protocol)という仕様に対応してるカメラなら結構動きそう。
作業環境は、Mac OS X 10.9,oF0.8.0。

libgphoto2のインストール

libgphoto2はMacPortsを使ってインストールするがoFは32bitなので、32bit環境で動くようにインストールしてやる必要があります。

  1. 32bitでコンパイルするように、MacPortsの設定ファイルを書き換える。
    /opt/local/etc/macports/macports.confの
    build_arch x86_64
    というところを
    build_arch i386
    に書き換える。行頭に#があればそれも削除
  2. MacPortsでlibgphoto2をインストール
    $ sudo port install libgphoto2
    エラー無く終われば、
    /opt/local/bin/gphoto2
    /opt/local/lib/libgphoto2
    にいろいろインストールされてるはず。
  3. ここでインストールに失敗したらMacPorts自体をアップデート/クリーンするといいかも
    僕はMacPorts自体を再インストールしました。
    MacPortsをアップデートする:sudo port selfupdate
  4. libgphoto2をインストールすると依存関係のあるgphoto2もインストールされるので、USBケーブルでカメラをつないで動作確認
    $ gphoto2 –auto-detect
    型式                         ポート
    ———————————————————-
    Nikon DSC D3100 (PTP mode)     usb:036,003
    こんな感じで繋いでるカメラの名前が出てきたらとりあえずOK

ofxPhotoのインストール

  1. githubのリポジトリからダウンロードしてきて、oFのaddonフォルダにいれる。
  2. 同梱のサンプルプログラムはWindows用なのでprojectGeneratorとかを使って、Xcodeプロジェクトを作成。
  3. ofxPhotoをプロジェクトに追加
    このときofxPhoto/src以外のフォルダはプロジェクトに追加しないでおく。
    lib以下はWindows用にコンパイルされたもののため使えず、追加されてると混乱のもとになるので。
  4. サンプルプログラムのソースをコピー(main.cpp,testApp.h,testApp.cpp)
  5. Project.xconfig内の、OTHER_LDFLAGSとHEADER_SEARCH_PATHSを修正し、以下のようにする。
    OTHER_LDFLAGS = $(OF_CORE_LIBS) /opt/local/lib/libgphoto2.dylib
    HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) /opt/local/include/gphoto2
  6. Build Settings内のHeader Search Pathに以下を追加
    /opt/local/include/gphoto2
  7. コンパイルして、スペースキーを押すとカメラのシャッターが切れることが確認できる
  8. 5と6がXcodeでコンパイルを通すために必要な記述

シャッターが切れない時

エラーコード:-53 GP_ERROR_IO_USB_CLAIMが出たら、Mac内の他のプロセスがカメラに接続していることが考えられるので、PTPを止める。
$ killall PTPCamera
これで大抵大丈夫なはず。これ以外には、カメラの充電が少なく、そもそもシャッターが切れない時に、
-60:GP_ERROR_IO_LOCKあたりが出た気がします。
それ以外のエラーは、gphoto2-port-result.hの中にエラーコードが定義されているので、そのへんから追いかけるといいでしょう。

これを使うと

SuperFlyingTokyoKyleのワークショップでやったLightLeaksがCanonのカメラじゃなくても実践できるようになります。0-EdsdkOscの代わりに色んな一眼レフで使えるようにしたのが、DSLROscです(要libgphoto2、ofxPhoto)。

Light Leaks from Kyle McDonald on Vimeo.

お問い合わせやご意見などは@yasnisまでどうぞ