Flow-Developers

Raspberry Pi, Raspbian, python, ROS, IoT, 電子工作, 機械学習, Deep learning, サッカー, スポーツ写真, ライフハック

open3Dをwindows10にインストールする

Getting Started

http://www.open3d.org/docs/getting_started.html

git clone

git clone https://github.com/IntelVCL/Open3D

Cmake

前提

  • anaconda/cmakeがinstall済
  • C:\Users\hogehoge\AppData\Local\Continuum\anaconda2\python.exeのhogehogeはユーザー名.
  • Open3D/src/Externalに移動してから下記コマンド実行
$cmake -G "Visual Studio 15 2017 Win64" -DBUILD_EIGEN3=ON -DBUILD_GLEW=ON -DBUILD_GLFW=ON -DBUILD_JPEG=ON -DBUILD_JSONCPP=ON -DBUILD_PNG=ON -DPYTHON_EXECUTABLE:FILEPATH=C:\Users\hogehoge\AppData\Local\Continuum\anaconda2\python.exe ../src

VisualStudio2017でビルド

前提

  • VisualStudio2017がinstall済

実行

  • Open3D/srcに移動してからOpen3D.slnをVisualStudio2017で開く
  • Releaseに変更する
  • ALL_BUILDを右クリック->リビルド
  • powershellを管理者権限で起動して以下を実行
cmake.exe -DBUILD_TYPE=Release -P cmake_install.cmake

open3dのinstall完了

  • import open3dが出来ることを確認する.
python
import open3d

実行結果

 python colored_pointcloud_registration.py

f:id:flow-dev:20180705214439j:plain

以上

ファンダフル・ディズニー会員がメンバー限定パスポートをオンライン購入する時,プランパスワードはここで入力する

はじめに

  • ファンダフル・ディズニー会員がメンバー限定パスポートをオンライン購入する時,どこでプランパスワードを入力するのか?とっても解りにくい.

ファンダフル・ディズニー会員とは?

  • お得なメンバー限定パスポートや限定グッズ/会報が得られる,年会費制の東京ディズニーランド公式ファンクラブのこと.

ファンダフル・ディズニー会員のメンバー専用ページにログインする

  • メンバーIDとパスワードを用意してログインする.
  • メンバーIDは郵送されるメンバーカードで確認する.
  • オンライン入会直後であれば,入会時にメモしておく.

www.tokyodisneyresort.jp

メンバー限定パスポート購入ページに移動するには

  • メンバー限定パスポートのページに移動し、オンライン購入ページへをクリックする.

f:id:flow-dev:20180609190004j:plain

f:id:flow-dev:20180609190440j:plain

  • ここで、東京ディズニーリゾートオンライン予約・購入サイトのIDとパスワード、メンバー限定パスポートのプランパスワードの3つを入力する.

  • 注意:東京ディズニーリゾートオンライン予約・購入サイトのIDとパスワードは,ファンダフル・ディズニー会員ID/パスワードとは別ですので,別途登録が必須.

  • ここからログインできれば,後は案内に沿って入力していけばパスポートを購入できる.

  • これでメンバー限定パスポートをオンライン購入できる.良きパークライフを.

MSYS2をプロキシ環境で使うTips

MSYS2をプロキシ環境で使う設定

  • シンプルにこれだけやれば,pacman等のupdateができるようになる.
  • C:/msys64/etc/profile.d/proxy.shを以下の通り設定する
export http_proxy=http://proxyserver.domain:port
export HTTP_PROXY=http://proxyserver.domain:port
export https_proxy=https://proxyserver.domain:port
export HTTPS_PROXY=https://proxyserver.domain:port
export no_proxy="localhost,127.0.0.1"
export NO_PROXY="localhost,127.0.0.1"

MSYS2内のMinGW64のPATH設定

C:\msys64\mingw64\bin

参考

WindowsのCakePHP3で発生したintlエラーを解決する

MSYS2 と MinGW のインストール

MinGW - gcc の環境設定(パスを通す) - Windows環境

なぜ異なるメーカーのカメラの露出が合わないのか?(1)

なぜ異なるメーカーのカメラの露出が合わないのか?(1)

  • なぜ異なるメーカーのカメラの露出が合わないのか?今回はISO感度規定の観点でまとめる.

デジタルカメラISO感度とは.


撮像素子の光感度特性を表す単一規定ではない.

  • デジタルカメラの感度規定で重要な点は,イメージセンサー(撮像素子)の光感度特性を表す単一規定ではないと言う事.
  • 標準出力感度(SOS [Standard Output Sensitivty])と推奨露光指数(REI [Recommended Exporsure Index])の2つの感度規定があり, 2つの感度規定はメーカーが独自に選択可能である.
  • またデジタルカメラの信号処理を含む光感度特性であるため,画像処理エンジンの性能が反映される.

Image Comparison@Dpreviewのデータで検証.

  • Image Comparison@Dpreviewを参考にすれば,同一光量における各メーカーの露出差が確認できる.(S/N等を比較するにも便利なサイト) f:id:flow-dev:20180506131116j:plain

標準出力感度(SOS [Standard Output Sensitivty])

  • 所定の条件で標準反射版(反射率18%のグレー)を撮影しデジタル出力値が8bit(0~255段階中)で118の値となる状態で光感度特性で定義.
  • パナソニック, 富士フイルム, オリンパス, ペンタックスが採用している.
  • Image Comparisonのデータで見ると,SOSは,同じ光量の被写体に対して,カメラ制御値が一定.
F値 ISO感度 FUJIFILM X-H1 Panasonic GH5S Olympus E-M1 II
5.6 200 1/60s 1/60s 1/60s
5.6 400 1/125s 1/125s 1/125s
5.6 800 1/250s 1/250s 1/250s
5.6 1600 1/500s 1/500s 1/500s
5.6 3200 1/1000s 1/1000s 1/1000s

推奨露光指数(REI [Recommended Exporsure Index])

  • 単体露光計や外部ストロボなどを使用する際の露光指数設定の参考とし,メーカーが独自に推奨する光感度特性を定義.
  • キヤノンニコンソニーが採用している.
  • Image Comparisonのデータで見ると,REIは,キヤノン, ニコン/ソニーでも差がある.
  • SOS規格と比べて,REI規格のメーカーの方が+0.3EV程度光感度特性が高い傾向がある.
  • キヤノンのISO1600.ISO3200はSOS規格と比べて,+0.7EV程度光感度特性が高い傾向もある.
F値 ISO感度 CANON 5DmkIV SONY A7III Nikon D850
5.6 200 1/80s 1/80s 1/80s
5.6 400 1/160s 1/160s 1/160s
5.6 800 1/320s 1/320s 1/320s
5.6 1600 1/800s 1/640s 1/640s
5.6 3200 1/1600s 1/1250s 1/1250s

まとめ

  • CIPA感度規定がメーカー毎の独自規定を持てる規格であること.シャッター速度/F値/ISO感度が同じにしても,画像出力値は一定にならない.
  • SOS規格と比べて,REI規格のメーカーの方が+0.3EV程度光感度特性が高い傾向がある.
  • キヤノンのISO1600.ISO3200はSOS規格と比べて,+0.7EV程度光感度特性が高い傾向もある.
  • 映像制作のように,異なるメーカーのカメラを混在させ撮影/編集/合成する場合, 単体露光計など基準となる測光計を決め,その基準に対する各カメラのISO感度の差分を把握した上で,撮影被写体に対するカメラ制御値を設定できる準備が必須である.
  • 0.3EVの差は,LUTを利用したグレーディングを行う上で,無視できない露出差である.

参考文献

Raspberry Pi Compute Module 3 を立ち上げる (OSインストール~2つのPicameraを起動するまで)

はじめに

  • Raspberry Pi Compute Module 3 Development Kit を立ち上げてみました.
  • RaspbianOSのインストールと2つのPicameraを起動するまでご紹介します.
  • SDカードからBootしない(eMMC内蔵). USBポートが1つしかないなど一般的なRaspberry Piとは異なりますので,初動の参考になればと.

RaspbianOSのインストール

  • Raspberry Pi Compute Module 3のeMMCを別のPCでマウントし, そこからOSイメージを書き込む必要があります.
  • WindowsOSであれば, 以下からマウント用のツールをダウンロードできます. https://www.raspberrypi.org/documentation/hardware/computemodule/CM-Boot-Installer.exe
  • Raspberry Pi Compute Module 3のusb slaveにWindows PCを繋ぎます.(pinはスレーブ_EN側(スレーブ実行する)にしておく)
  • Raspberry Pi Compute Module 3のpower inに電源を供給します. f:id:flow-dev:20171224081049j:plain
  • rpiboot.exeを起動すると, 追加ドライブとしてRaspberry Pi Compute Module 3がマウントされますので, そこをターゲットとし,OSイメージを書き込みます.
  • Raspberry Pi Compute Module 3のeMMCは4GBなので, コンパクトサイズなOSである,Raspbian Stretch Liteを利用します.
  • OSイメージの書き込みには,一般的なRaspberrypiと同様に,Win32DiskImagerを使います.
  • OSイメージを上書きしたくなった場合も, 一般的なRaspberrypiと同様にSDcardFormatterでフォーマットしてから書き込めば出来ます.

参考


Raspberry Pi Compute Module 3の起動

f:id:flow-dev:20171224082106j:plain

  • Raspberry Pi Compute Module 3のusb slaveからUSBケーブルを外す.(pinはスレーブ_DIS側(スレーブ実行しない)にしておく)
  • slave USBを外さないと起動しないようです.
  • Raspberry Pi Compute Module 3のpower inに電源を供給します.
  • Raspberry Pi Compute Module 3をHDMI接続します.
  • Raspberry Pi Compute Module 3のusb portにキーボード等取り付けます(一口しかないので, 拡張必須)
  • LANがないので, 有線LAN等はUSBポートを増やし接続しました.(図参照)
  • 以下でloginできます(デフォルト)
user:pi
pw:raspberry

f:id:flow-dev:20171224084247j:plain


2つのPicameraを起動する

wget https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.dts
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-dualcam.dts 
sudo shutdown -r now

f:id:flow-dev:20171224083234j:plain

  • 最終的にはこんな感じの接続になってます.これで2つのpicameraの絵がでました.

f:id:flow-dev:20171224083448j:plain


まとめ

flow-developers.hatenablog.com

flow-developers.hatenablog.com

参考文献


以上

pythonからC++関数を簡単に呼ぶ方法

はじめに

f:id:flow-dev:20171219075129p:plain

  • C++で書いたアルゴリズム関数をpythonに組み込んで頂戴」なんてことがあります.
  • numpyとか駆使すれば十分高速なコードが書けるのですが,書き換えるのも面倒です.(興味がないコードだったりもしますし.)
  • そういう時のために,pythonコード内でC++を簡単に呼ぶ方法をまとめておきます.
  • ベースはpythonで書いて,画像処理だけC++のコードで貰う時とか便利です.
  • ctypesを使います.

サンプルコード

  • githubに置きました.
  • ctypes_for_Image_processing.
  • 実践的じゃないhelloworldのサンプルではなく,変数とポインタ渡しのサンプルです.

要点

C++コードをWindowsOSであれば,DLL化. LinuxOSであればShared Object(so)化します.そうすればctypesで呼び出せます.

x86_64-w64-mingw32-g++ -c Image_processing.cpp
x86_64-w64-mingw32-g++ -shared -o Image_processing.dll Image_processing.o
  • Linux OS(こっちの方が簡単)
g++ -g -Wall -fPIC -o Image_processing.o -c Image_processing.cpp
g++ -shared Image_processing.o -o Image_processing.so
  • あとはサンプルコードをご参照ください.(出来るだけシンプルに書きましたので)

まとめ

  • pythonで手早くC++関数を呼ぶ方法をまとめてみました.
  • これでpythonC++関数を混在しなきゃいけない場面でも安心ですね.
  • ROSでpythonC++共存させちゃうのもありますけど,インストール大変ですしね.

flow-developers.hatenablog.com


以上

RaspberryPiで一眼レフカメラをリモート制御する環境を作るには,gphoto2-updaterが簡単です.

はじめに

  • 一眼レフカメラをリモート制御する定番ライブラリは,gphoto2です.
  • gphotoに関する日本語記事は古く∧少ないのですが,「インストールが大変面倒っぽい.動作が不安定」などネガティブな意見が散見されます.不安だけが残ります...
  • 2017年現在は,gphoto2-updaterというシェルがあって,これを叩けば簡単に環境構築できます.

gphoto2とは

f:id:flow-dev:20170814084918p:plain

  • gphoto2とは,PTP通信を叩けるライブラリです.
  • 各カメラメーカーのPTP仕様にカスタマイズしています.最新機種などカスタマイズが間に合ってない部分もありますが,PTPの個別アドレス自体はアドレス指定で叩けますので仕様解析すれば問題ないです.(←ココ重要です)

gphoto2-updaterでインストール

  • gphoto2-updaterでインストールしましょう.依存関係も解消してくれるので以下1コマンドで終わりです.
  • gphoto2-updaterの名前通りで,最新versionへのupdateもできそうです.
wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh

一眼レフカメラをリモート制御してシャッターを切ってみる

  • 一眼レフカメラをRaspberryPiにUSB接続して以下のコマンドを打てば,シャッターが切れ,画像はカメラ側に保存されます.
sudo gphoto2 --capture-image

*動画のREC開始/終了は以下のコマンドです.

sudo gphoto2 --set-config movie=1
sudo gphoto2 --set-config movie=0


Raspberry Pi Tutorial 41: Control a DSLR with your Pi!

pythonでgphoto2が叩ける環境もいれておく

  • python-gphoto2という便利なラッパーばあります.pipで簡単に入ります.
  • これでpythonコードにgphoto2のコマンド埋め込みもできます.
sudo pip install -v gphoto2

まとめ

  • gphoto2-updaterpython-gphoto2を紹介しました.
  • 上記の通り,RaspberryPiで一眼レフカメラをリモート制御する環境を作るのは2017年現在はすごく簡単になっています.
  • ここまで簡単に環境できれば,ガジェット作りもやる気がしますね.

以上