定点観測用アプリのソースコードと使いかた
時間間隔を開けて、同じ構図で写真撮影をして、季節の変化や植物の成長、建築中の建物の建設工程などを記録するための支援アプリです。
最近でデジカメでは「タイムラプス」機能がついていて、三脚でカメラを固定し、放置しておけば、こうした写真を撮影することができます。
しかし、この方法では数日とか数か月ごとの間隔での撮影が事実上不可能です。
そこで、最初に撮影した画像と現在レンズが映している画像を重ね合わせ、同じ構図で撮影出来るようにするアプリを作りました。
ソースコードを公開しますので、適宜書き換えてお使いください。Java言語が使える人向けです。
自作した理由
実はこうしたアプリ、すでにAndroidスマホ用のアプリではフリーのものが出回っていたりします。
当初私もこれを使おうと考えたのですが、機能と関係ない電話番号や通話記録を取得したり、うまく動かなかったりというものがあっていま一つ信用できませんでした。
そんなわけで自分で作ることにしました。
スマホで開発しようと考えたのですが、自分のPCではスマホの開発環境「AndroidStudio」が能力不足で動かないことがわかり、仕方なくPC用の
Java
楽天 で作成しました。
写真のように、小さいノートPCに入れて使います。
カメラ
楽天 付であればよかったのですが、自分の所有しているものは付いてないので、USBカメラをくっつけて、なんとも不格好なありさま。
対応機種
通常は屋外で使うので、ノートPCか、windowsで動くタブレットであればそのまま動くと思います。
AndroidはJavaで動きますがGUI部分を全面的に書き換える必要があります。
Linuxはちょっと変更必要?将来的にはRaspberry Piに入れて使ってみたいと考えています。
使用条件等
Javaなので、PCにJavaをインストールしておく必要があります。
また、Webcam CaptureというAPIを使うので、JavaのホルダにこのAPIを入れておきます。
詳しくはこちらを参考にしてください。
選べる画像のサイズは、176x144、320×240、640×480の3つだけ。ソースコードでは640×480にしています。これはWebcam Captureの仕様なので仕方ありません。
当初はJMF(Java Media Framework)を使って画像を取得するつもりだったのですが、こちらはサイズ固定なのでWebcam Captureにしています。
ホルダ構成は、
/定点カメラ/下に時実行ファイルを置く。
/定点カメラ/motodata/下に最初の(重ねあわせる)画像を置く。
/定点カメラ/data/を撮影済みデータを置くために作っておきます。
(ダウンロードするとこれらのホルダも入っているのでそのままお使いください。)
使いかた
①準備
ソースコードをコンパイルしてjarファイルを作り、所定のホルダに置きます。
カメラが内蔵されていない場合は
UBSカメラ
楽天 を接続します。
②起動
jarファイルをダブルクリックして起動すると、下記のようなフレームが立ち上がります。
最初の画像を撮影する場合は、この状態で構図を決め、「撮影」ボタンを押して保存します。
画像ファイルは/data/以下に入るので、これを/motodata/以下にコピーして分かりやすい名前に変更し、元画像とします。
②元画像の選択
「元画像選択」ボタン楽天 を押すと、元画像のリストが表示されるので、撮影する画像を選びます。
③撮影
元画像と現在のレンズ越しに見えている画像が重ね合わされて表示されます。
2つの画像がうまく合致するようにカメラの位置方向を調整して「撮影」ボタンを押します。
完全に合致させるのは難しいかもしれません。
撮影済みの画像は/data/以下に元画像ファイル名のホルダが作られて、その下に保存されます。
画像の重ね合わせは、元画像を反転させるメソッドも作ってみました。完全に重なると灰色になるのでこちらの方が識別しやすいかなと思ったのですが、
私の貧弱ノートPCだと処理が追いつかないので単純に重ねることにしました。
使用するメソッド、getGouseiImgをgetGouseiImg2に差し替えるとこの反転画像に出来ます。処理速度が速ければこちらをお勧めします。
ソースコードのダウンロード
こちらをダウンロードして解凍してお使いください。
jarファイルも置いておきました。
最終更新日: 2016-06-14 13:17:16