macOSでRealsense
2017-12-28(木)
CreativeのSenz3dがmacOSでも使えるらしいので試してみた。
インストール(macOS)
librealsenseは公式サポートではないがIntel謹製のライブラリらしい。 Homebrewにも存在するがPython wrapperが欲しいので自前でビルドする。
git clone https://github.com/IntelRealSense/librealsense.git
mkdir build
cd build
ccmake ..
で
- BUILD_CV_EXAMPLES: OpenCVの実装例
- BUILD_PCL_EXAMPLES: PCL(Point Cloud Library)の実装例
- BUILD_PYTHON_BINDINGS: Python用のpackage(Python3)
をONにして,
- BUILD_WITH_OPENMP: OpenMPだがmacOSだとエラーになる。動くようにしても大して速くならないとのこと
をOFFにしておく。あとはOpenCVなりPCLなりが入っている環境なら問題無く動く。
-- Installing: /usr/local/lib/librealsense-file.a
-- Installing: /usr/local/bin/rs-capture
-- Installing: /usr/local/bin/rs-save-to-disk
-- Installing: /usr/local/bin/rs-multicam
-- Installing: /usr/local/bin/rs-pointcloud
-- Installing: /usr/local/bin/rs-align
-- Installing: /usr/local/bin/rs-sensor-control
-- Installing: /usr/local/bin/rs-depth
-- Installing: /usr/local/bin/rs-color
-- Installing: /usr/local/bin/rs-distance
-- Installing: /usr/local/bin/rs-terminal
-- Installing: /usr/local/bin/rs-enumerate-devices
-- Installing: /usr/local/bin/realsense-viewer
-- Installing: /usr/local/bin/rs-data-collect
-- Installing: /usr/local/bin/rs-depth-quality
-- Installing: /usr/local/bin/live-test
-- Installing: /usr/local/lib/pyrealsense2.2.8.3.cpython-36m-darwin.so
-- Installing: /usr/local/lib/pyrealsense2.2.cpython-36m-darwin.so
-- Installing: /usr/local/lib/pyrealsense2.cpython-36m-darwin.so
-- Installing: /usr/local/lib/pybackend2.2.8.3.cpython-36m-darwin.so
-- Installing: /usr/local/lib/pybackend2.2.cpython-36m-darwin.so
-- Installing: /usr/local/lib/pybackend2.cpython-36m-darwin.so
-- Installing: /usr/local/bin/rs-imshow
-- Installing: /usr/local/bin/rs-grabcuts
-- Installing: /usr/local/bin/rs-latency-tool
-- Installing: /usr/local/bin/rs-dnn
-- Installing: /usr/local/bin/rs-pcl
という感じに面白いサンプルも入る。
サンプル
下のWrapperのサンプル以外のrs-*がそれ。名前のまんまなのでそれぞれ実行すると分かる。 realsense-viewerは至れり尽せり。
Pythonパッケージ
pythonのpyrealsense2は適切な場所に置く必要がある。例えば
cd /usr/local/lib/python3.6/site-packages/
ln -s /usr/local/lib/pyrealsense2.cpython-36m-darwin.so pyrealsense2.so
ln -s /usr/local/lib/pybackend2.cpython-36m-darwin.so pybackend2.so
のような感じで使える。
Wrapperのサンプル
- rs-imshow: OpenCVのサンプル(imshow)
- rs-grabcuts: OpenCVのサンプル(Grabcutsの実装)
- rs-latency-tool: OpenCVのサンプルだがmacOSが白画面で応答しなくなった
- rs-dnn: OpenCVのサンプル(SSD+距離計測, build/wrappers/opencv/dnnへ移動して実行)
- rs-pcl: PCLのサンプル
Pythonパッケージの使用例
ここのを少し弄って動くようにした。
import pyrealsense2 as rs
pipeline = rs.pipeline()
pipeline.start()
while True:
frames = pipeline.wait_for_frames()
depth = frames.get_depth_frame()
if not depth: continue
coverage = [0]*64
for y in range(480):
for x in range(640):
dist = depth.get_distance(x, y)
if 0 < dist and dist < 1:
coverage[int(x/10)] += 1
if y%20 is 19:
line = ""
for c in coverage:
line += " .:nhBXWW"[int(c/25)]
coverage = [0]*64
print(line)
で距離画像をASCII Art化して表示してくれる。 ローテク加減が面白い。 ※固定長フォントでお楽しみ下さい
.
nWBnBWWX:
h :WWWWWWWWWn.
WnWWWWWWWWWWWB
.nXhWWWWWWWWWWWW:
.:hWWWWhWWWWWWWWWWWW:
:WXBXXWWWWWW:hWWWWWWWWWWn n: .
nWWWWWWWWWWWWX.:hhBXXh:n. XWWXX
hWWWWWWWWWWWWWWX: hWBh: .:WWWWWBB
:WWWWWWWWWWWWWWXWWB:.. :BWWWWWXnXX
XWWWWWBhWWWWWWWWWWWWWWWWWWWWWW:hB.
nWX:hWWX:
B :WWWWWWWWWn.
WnWWWWWWWWWWWB
.:XhWWWWWWWWWWWW.
.hWWWWnWWWWWWWWWWWW:
:XBhBXWWWWWW:hWWWWWWWWWWn n.
hWWWWWWWWWWWWB :BhBXXh:n: XWWXB
hWWWWWWWWWWWXWWX: hWXhn .:WWWWWhX
.WWWWWWWWWWWWWWWWWB:. :BWWWWWWnBh
BWWWWXBhWWWWWWWXWWWWWWWWWWWWWWhXB:
BWnnBWWB
:. hWWWWWWWWX.
WnWWWWWWWWWWXh
:XBWWWWWWWWWWWX.
.BWWWXnWWWWWWWWWWWW
nXBhBBWWWWWW.XWWWWWWWWWW..n.
hWWWWWWWWWWWWn hhBBXXhnh.:WWWXB
hWWWWWWWWWWWXWWh WWXh: .nWWWWXBh
:WWWWWWWWWWWWWXWWWh.. nXWWWWWXhWB.
XWWWWWBhWWWWWWWXWWWWWWWWWWWWWXnBBn
XW.nBWWB
n. BWWWWWWWWh:
:WnWWWWWWWWWWXn
hWBWWWWWWWWWWWX
:BWWWBnWWWWWWWWWWWW
nBhhBXWWWWWW:XWWWWWWWWWW.:n..
BWWWWWWWWWWWWn hBBXXXnnh :WWWBB
hWWWWWWWWWWWXWWh. WWXh. .nWWWWXBn
.WWWWWWWWWWWWWXWWWh.. nBWWWWWXhXh
XWWWWWXBWWWWWWWXWWWWWWWWWWWWWWnhn
.
:WhnXWWW:
n :WWWWWWWWWBn.
BhBWWWWWWWWWWX:
hhWWWWWWWWWWWWh
:BWWXnBWWWWWWWXWWWn
:BBhhWWWWWWX:XWWWWWWWWWB :n:
hWWWWWWWWWWWWn hnBBXX::: hWWWBB
hWWWWWWWWWWWXWWB..WWhn. nBWWWWWBh
:WWWWWWWWWWWWWXWWWB:...hXWWWWWXhXh.
XWWWWWXXWWWWWWWXWWWWWWWWWWWWWXhXB.
BB:
.hhWWWWWBn.
XWWWWWWWWXh
..WWWWWWWWWWWW
nBWWWWWWWWWWWW
hBWWWWWWWWWWX
:hB.nXXhXWWXnn
:XWWWWX:. WWWWWn XWB.
.XWWWWWWWWWXWB. ::. .nWWWWWXh.
.WWWWWWWWWWWXWWWWBhBXWWWWWWWWWWn.
.WWWWWWWWWWWWWXWWWWWXWWWWWWWWWWWWX
BWWWWWWWWWWWWWXWWWWWWWWWWWWWWWWWWh.
XWWWWh:BWWWWWWWWWWWWWWWWWWBhh:XWn
nXX.
:hXWWWWWBnn
WWWWWWWWWWB:
:nWWWWWWWWWWWW
BWWWWWWWWWWWW
nBWWWWWWWWWWX
.nB.nWBXWWWBn: :
.hWWWWX: .WWWWW: .XWWXn.
.XWWWXWWWWWWB:.::. :BBWWWWWWWn
:WWWWWWWWWWXWWWWBBXWWWBWWWWWWWWWh
.WWWWWWWWWWWWWXWWWWXXWWWWWWWWWWWWW:
hWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWB
XWWWXnnXWWWWWWWWWWWWWWWWWWWXhhXWBh
:Bh:
.nBWWWWWXhh:
BWWWWWWWWWXh
:XWWWWWWWWWWWh
.BWWWWWWWWWWWh
:WWWWWWWWWWW:
nBB.BBhXWWXB: nh:
.:hWWWWh. BWWWWh .BWWWXh:.
.XWWWWWWWWXWB..:. BWWWWWWWWWB
:WWWWWWWWWWWWWWWBBBXWXWWWWWWWWWWh
.WWWWWWWWWWWWhXWWWWXXWWWWWWWWWWWWWh
hWWWWWWWWWWWWWWWWXWWWWWWWWWWWWWWWXh
BWWWX: hBWWWWWWWWWWWWWWWWWWX:hXWhn:
:B:
:hXWWWWh
.hWWWWWWWX
nhWWWWWWWW.
nBBXXBn.
. .. hWXX
hB...XXWBn...nWh:. .n.
hWWWWXWWWBWWWWWWWWWhBWW.
:WWWWWWWWWWWWWWWWWWWWXWXn:
hWWWWWWWWWWWWWWWWWWWWWhBXh
nWWWWWWWWWWWWWWWWWWWXh.nBB
BXBn :WWWWWWWXWWWXXWWWWB:
nBhWWWWWWWXBWWWXhn:
. .h:.. .
. BXWWWB: .nBhn
n:. .: ::.
hXWh.. .
:. .
:WWWn:. ..
:. .
.BBX:.:. ..
::
.hBX .
nn
n :.
.:n: .
.hXh
hW:.:
nXWWWXh:
WWWWWWWn
nWXXXXB.
. : .Bh: :B
hhW: BWnn..:BWX
.nXWnhWWWWWWWWWh.. ..
nWWhBWWWWWWWWWX:nn
:B:hWWWWWWWWWWhnn .
hhhXWWWWWWhn:
.BXhBnh ..
:Bn.
nXWWWWXh.
nWWWWWWWWW
:WWWWWWWWX
..:BXXXBhh. :
:BWn .WBXn n:::.
nBXBXWWWWh:.:nXWXnXWXW
nWXWWWWWWhXWWWWWWWWWWXB:
.WWWWWWWWWWWWWWWWWWWWXhWX:
:WWWXXWWWWWWWWWWWWWWX nBn.
BWBh:hWWWWWWWWWWWWWB.nnh.
. :hBBWWWWWWW:: .
nn
.nWWWWhhnh:
BWWWWWWWWXX
WWWWWWWWWWWn
.BWWWWWWWWWW
.XWWWWWXXWn .
nWWX ::WWWWn :WB .
.::hhWWWWXn.hhhn nWBWWWWXBn
XWWWWWWWWWWWBhhBWWWBWWWWWWB:
:WWWWWWWWWWXWWWWWWWWWWWWWWXWW
hWWWWWWWWWWWWWWWWWWWWWWWXWWWX.
nWXWh:WWWWWWWWWWWWWWWWWX.WWWX.
:XXXn nBWWWWWWWWWWWWWWX.BWX:.
hXB:
:hWWWWWBBnhn
WWWWWWWWWWWXh
WWWWWWWWWWWWB
WWWWWWWWWWWWn
hWWWWWWWWWWW.
nXWn:XBXWWXBhn Xh:
::WWWWWn :WWWWW..nWWWWXh::
:WWWWWWWWXWWn::...nWWXWWWWWWWB
WWWWWWWWWWWWWWWWWWWWWXWWWWWWWWB
nWWWWWWWWWWWXWWWWWWWWWWWWWWWWWWX
:WWWWXWWWWWWWWWWWWWWWWWWWWXWWWWX
BBnB:nXWWWWWWWWWWWWWWWWW.nWWWWB