Depth Camera D435をWindows10_PCのPythonプログラムで動作させる



#### Anaconda2019.07をWindows10へインストールし仮想環境Python3.6でPyrealsense2とOpenCV3.4を動作させる手順

#Depth CameraをPythonで動作させる

### Depth Camera D435

スイッチサイエンスさんのページを参照してください
https://www.switch-science.com/catalog/3633/?gclid=Cj0KCQjw5MLrBRClARIsAPG0WGwi2pL1AkDwZu2g5SmnfRcIzR-KR-LB-YlbhczWDeIHfPzhOVtZeFgaAjeoEALw_wcB
参考ページ
https://qiita.com/PINTO/items/73b341a3661367a0dc61

### Depth Camera D435のPythonラッパー

Depth CameraのPythonラッパーのページ
https://pypi.org/project/pyrealsense2/

Python3.6に対応したラッパーを使います（2019年9月時点では最新）

     pyrealsense2-2.27.0.1067-cp36-cp36m-win_amd64.whl

Anaconda 2019.07 は、Python3.7がインストールされるため、Python3.6に対応してるD435のpythonラッパーはインストールできません。そこで、python3.6を指定した仮想環境を作成してインストールを行います。


# インストール手順

### 0．前提
D435を接続するために、USB3.0ポートがあるWindows10_PCを準備します。
今回動作確認したPCは、Amazonで買ったLIVAというPCで次のような仕様になっています。

    ECS 小型デスクトップパソコン LIVA Zシリーズ Pentium N4200/メモリ4GB/eMMC32GB/Windows 10 Home LIVAZ-4/32-W10(N4200)

インストール作業はWiFiなどでインターネットにつないだ状態でないといけません。

### １．Anacondaをインストール

AnacondaのページからAnaconda 2019.07 for Windows Installerをダウンロードして実行する
　https://www.anaconda.com/distribution/

参考ページ
https://weblabo.oscasierra.net/python-anaconda-install-windows/

### ２．Anaconda仮想環境作成
python3.6を指定した仮想環境を作成します。とりあえず仮想環境の名前をpython3.6としました。

このページを参考にして作成してください。
https://qiita.com/yokotate/items/e91aadbdf9e18b40b832

![Navigator7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/3f436868-d517-f7ae-0595-5122342dcb83.jpeg)

### ３．OpenCV3.4のインストール
Not installed リストからopencvを探します。2019年9月4日時点でVer 3.4がありました。
これをapplyボタンをクリックしてインストールします。

![Navigator2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/139717f1-8c74-02d0-3bca-13986941c07c.jpeg)
![Navigator3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/c8d51fbf-4e8b-5543-ebad-c5a69620f7c8.jpeg)



次の参考ページでは、Wheelパッケージをダウンロードして、pipコマンドでインストールしています。
https://qiita.com/FukuharaYohei/items/5d49938ffd33d198f0c0

### ４．python3.6環境内にpyrealsense2をインストール
     < python3.6 > C:\Users\User_name> pip install pyrealsense2

### ５．python3.6環境内にspyderをインストール
python3.6を指定した仮想環内のAnaconda Promtでcondaコマンドを使ってインストールします。

     < python3.6 > C:\Users\User_name> conda install spyder
![Navigator8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/7000381b-353f-3bac-7cca-f2bcd37b6469.jpeg)

インストールが済んだらspyderを立ち上げてpythonのバージョン3.6であることを確認します。


![Navigator4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/b0e8bd4d-1008-6b12-96c6-f0d3190bdcca.jpeg)

![Navigator9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/28f37781-ce6c-7351-bd14-df33885b82fa.jpeg)



# カメラの動作確認


### サンプルプログラム
```python:sample.py
import pyrealsense2 as rs
import numpy as np
import cv2

pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
# Start streaming
pipeline.start(config)
# カスケード型識別器の読み込み
cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

try:
    while True:
        #---------------------------------------------
        # Wait for a coherent pair of frames: depth and color
        #---------------------------------------------
        frames = pipeline.wait_for_frames()
        depth_frame = frames.get_depth_frame()
        color_frame = frames.get_color_frame()
        if not depth_frame or not color_frame:
            continue
        #---------------------------------------------
        # Apply colormap on depth image 
        # (image must be converted to 8-bit per pixel first)
        #---------------------------------------------
        depth_image = np.asanyarray(depth_frame.get_data())
        depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
        #---------------------------------------------
        # Convert images to numpy arrays
        #---------------------------------------------
        color_image = np.asanyarray(color_frame.get_data())
        #---------------------------------------------
        # Marking rectangle to detected object 
        #---------------------------------------------
        # グレースケール変換
        gray = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY)
        # 顔領域の探索
        face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))
        # 顔領域を赤色の矩形で囲む
        for (x, y, w, h) in face:
            cv2.rectangle(color_image, (x, y), (x + w, y+h), (0,0,200), 3)
        #---------------------------------------------
        #Color image show
        #---------------------------------------------
        cv2.namedWindow('Color', cv2.WINDOW_AUTOSIZE)
        cv2.imshow('Color', color_image)
        #---------------------------------------------
        #Depth image show
        #---------------------------------------------
        cv2.namedWindow('Depth', cv2.WINDOW_AUTOSIZE)
        cv2.imshow('Depth', depth_colormap)
        #---------------------------------------------
        # Key operation
        #---------------------------------------------
        key = cv2.waitKey(1)
        #---------------------------------------------
        # Press esc or 'q' to close the image window
        #---------------------------------------------
        if key & 0xFF == ord('q') or key == 27:
            cv2.destroyAllWindows()
            break
        #---------------------------------------------
        # Press 's' to save the image with jpg
        #---------------------------------------------
        if key == ord('s'):
            cv2.imwrite('./out.jpg', color_image)
finally:
    pipeline.stop()
```
[file]https://1drv.ms/u/s!AoQu_S_gc6kShod2UenWaM8bDrXTaQ?e=TGtGK1

### spyderを使って実行する

１．Anaconda3のAnaconda　Navigatorを立ち上げる
![Navigator6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/41bff633-7fa7-a2d6-c5a2-543085f5d597.jpeg)


２．仮想環境python3.6のTerminalを立ち上げる

![Navigator.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/c0165d4b-c186-149a-1da0-028c13e7484e.jpeg)

３．Comand Prompt でspyderを立ち上げる

     < python3.6 > C:\Users\User_name> spyder
![Navigator4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/bc42b881-6aec-d46a-f971-91f3ec612cf4.jpeg)

４．spyderで実行ファイルを読み込んで実行する
![Navigator5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/afef3206-761f-7ba6-efe3-c4bca1bbe7e9.jpeg)

実行結果
![Depth_Cam.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492810/94741e53-845c-a7d2-dc23-11059ae60ad2.jpeg)

以上です。

# 編集後記
初めてQiitaでBlogを作成しました。約5時間で作成できました。