見出し画像

Pixel4のDual-Pixel modeで撮影しDataを取り出す方法

 前回まではどの様な画像処理が内部でされており、実際にどの様な画像が得られるかを取り上げました。

 今回は具体的にPixel4で、撮影しDual-Pixelの画像を取り出すところまでを説明していきます。Android端末からデータを吸い出す方法をすでに知っている方は飛ばしても良いかと思います。特に特殊な作業等はありません。

制御端末からAndroid端末を操作する方法

 以前に投稿した初期設定やAppのインストールが終了している前提で開始いたします。まだ設定していない方はこちらを参考にしてAppをAndroid端末にインストールしてください。

 操作端末にAndroid端末をUSBで接続した状態で、以下のコマンドをコマンドプロンプトから入力して操作端末側で認識しているのを確認しましょう。

> adb devices
> adb shell

 adb devicesはUSBに接続されているAndroid端末一覧を表示するコマンドです。接続されている端末が一つの場合は、adb shellでUSB経由でAndroid端末を操作することができます。私の環境では以下のように表示されました。

画像1

 9A271FFAZ006AUは接続したPixel4のID番号です。adb shellと入力することで、端末の中に入っています。接続が無事に終了するとAndroid端末のコマンドプロンプトが表示され、入力待ちとなります。

Daul-pixelの画像取得方法

 実際にインストールしたアプリを使用して撮影してみましょう。Appをインストールしたのちのスクリーンショットを示します。赤丸で示したAppをクリックするとアプリが起動します。

画像2

 起動すると実際の撮影画面になるので撮影してみましょう。ここでの注意は必ず横向きにして撮影してください。横向きに撮影しないと意図した画像が得られません。この理由は別途説明いたします。
 撮影は簡単で下の像の赤く囲んだところをクリックするだけです。非常にシンプルなAppなので特に難しいことはないかと思います。

画像3

 ここでの注意点は、撮影した画像は通常の写真撮影データとは全く別のところに保存されます。なのでPhotosを覗いても撮影したデータは見当たらないです。次に撮影したデータの場所と、そのデータの取り出し方法を説明します。

Dataの場所と吸い出し方法

 撮影後のPixel4をUSBで接続し、adb shellでPixel4をコマンドプロンプトから直接操作できるようにしておきます。その後以下の場所に移動すると実際に撮影したDataが見れます。

>cd /sdcard/Android/data/com.googlereseach.pdcapture/files

 Pixel4にSDカードスロットルはないのですが、なぜかsdcard配下にDataが保存されます。仕様なので気にしないようにしましょう。
 一枚の画像だけならさほど面倒ではないですが、複数枚の画像だとShellを組んで処理した方が効率化できます。なので私は以下のようなShellを組み実行権をつけて処理をしています。

#!/bin/bash
HOST_DIR= xxxxxx
DEVICE_DIR=/sdcard/Android/data/com.googlereseach.pdcapture/files
EXTENSION=".pgm"
for file in $(adb shell ls $DEVICE_DIR | grep $EXTENSION'$')
do
   file=$(echo -e $file | tr -d "\r\n"); # EOL fix
   adb pull $DEVICE_DIR/$file $HOST_DIR/$file;
done

 HOST_DIRのところに、制御端末上で保存したいFolder情報を入力すれば、指定した条件に一致するファイルを一括取得できます。
 私はあまりShellに馴染みがないので、最低限の機能のみを実装しました。もっと良い書き方や便利なShellがあったら是非とも教えてください。

 次回からはいよいよ取り出した画像に加工処理を加えていきます。今回はここまで。


アメリカSilicon Valley在住のエンジニアです。日本企業から突然アメリカ企業に転職して気が付いた事や知って役に立った事を書いています。