libgptho2とrubyを使ってmacにusb接続したRICOH THETA Sで撮影と画像取得してみた。
試した環境
- mac:iMac (21.5-inch, Late 2013) OSX 10.11.4
- RICOH THETA S ファームウェアバージョン 01.42
- libgphoto2-2.5.9
- ruby 2.1.5p273
- gem
- ffi-gphoto2 (0.5.1)
- ffi (1.9.10)
作成したスクリプト
- Gemfile
# A sample Gemfile
source "https://rubygems.org"
gem 'ffi-gphoto2'
- test.rb
require 'gphoto2'
p camera = GPhoto2::Camera.first
p camera.can? :capture_image
# => true
file = camera.capture
file.save('test.jpg')
スクリプトの実行手順
- RICOH THETA Sをmacに接続しておく
- libgphoto2インストール
$ brew install libgphoto2
- bundle install
$ bundle install --path vendor/bundle
- OSXのPTPデーモンkill
- gPhoto / Mailing Lists参照
- これをしておかないとスクリプトのcamera.captureでエラーとなる
$ ps axuwww | grep "Image" | grep -v grep
# => /System/Library/Image Capture/Devices/PTPCamera.app/Contents/MacOS/PTPCameraのPID確認
$ sudo kill -9 [確認したPID]
- スクリプト実行
$ bundle exec ruby test.rb
# => 同じディレクトリにtest.jpg作成
おまけ - Windows環境でやってみる
以下のVirutalBox+ubuntu環境で同様にスクリプトを実行できた。
- ホストOS:Windows7 Professional SP1
- VirtualBox 5.0.14
- ゲストOS:Ubuntu 14.04
- VMのUSB設定でTHETAが繋がるようにする
- gphoto2-updaterでgphoto2 2.5.10.1
- ruby 2.1.8p440
- gem - ffi-gphoto2 (0.5.1)、ffi (1.9.10)
oobaring: HowTo: Install gphoto2 in windows 7の情報はあるがgphoto2のバージョンが古いビルドしかない。
この手順で試してみて撮影はできたが画像取得でエラーが起きてうまくいかなかった。
WIA(Windows Image Acquisition)使ったりすればネイティブアプリでもいけるんだろうけどお手軽にはいけなさそう。
PTPを使ったデバイス制御