THORLABSのカメラCS2100M-USBをPythonで動かす【研究用】


## はじめに
THORLABS(ソーラボ)のカメラ[CS2100M-USB](https://www.thorlabs.co.jp/newgrouppage9.cfm?objectgroup_id=11421)をPythonで動かす方法についてシェアしたいと思います。前回の記事[THORLABS自動ステージをPythonで動かす【研究用】](https://qiita.com/opto-line/items/68e144b2ee2e5b733f3d)に使用したカメラと同じカメラです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/5ae16da1-b8b5-a72f-f126-882040a16390.jpeg" width=90%>

##サンプルプログラムの実行結果
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/cae0bf31-4eea-edf6-50d0-2880da1ef590.png)

## 開発環境

- Windows10 (x64)
- Python3.6
- Anaconda3

## 使用する機材
- [CS2100M-USB(Thorlabs Inc.)](https://www.thorlabs.co.jp/newgrouppage9.cfm?objectgroup_id=11421)


##インストール
使用できる言語は以下の通りです。充実していますね。

>C、C++、C#、Python、Visual Basic .NET API
>LabVIEW、MATLABならびにµManagerサードパーティーソフトウェア


SDK(Software Development kits)はWindows®7、10用のThorCam™ソフトウェアをダウンロードすると一緒についてきます。
さっそくダウンロードしていきましょう。

**1.  ThorCam™ソフトウェアのダウンロード**
まず、ThorCam™ソフトウェアをダウンロードします。
[ThorCam™ Software for Scientific and Compact USB Cameras](https://www.thorlabs.co.jp/software_pages/ViewSoftwarePage.cfm?Code=ThorCam)
赤枠の①をクリック
![コメント 2020-02-18 110907.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/fd872a0d-adc2-0c8c-2a60-fdaaa59cd32f.png)

ダウンロード画面
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/79559957-47bf-c739-54e5-aa71be969e07.png" width=50%>

てきとうにポチポチして完了。


**2.  ディレクトリの確認**
以下の名前のフォルダが生成されていることを確認してください。
このフォルダ内で作業します。
`C:\Program Files\Thorlabs\Scientific Imaging`

**3. あれやこれや**
Scientific_Camera_Interfaces.zipを解凍します。
解凍できない場合は、管理者権限で解凍を選択するとうまくいきます。
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/e5b6cd3c-97c1-c860-a33d-89dffebc0a62.png)

`C:\Program Files\Thorlabs\Scientific Imaging\Scientific Camera Support\Scientific_Camera_Interfaces\Scientific Camera Interfaces`
にSDKが入っています。
`Python README.txt`に従ってあれやこれやしましょう。(これが面倒)
![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/923be1b3-72f3-0363-1a1c-34c8d8b88dae.png)

以下のディレクトリにあるファイルを全選択し、
`C:\Program Files\Thorlabs\Scientific Imaging\Scientific Camera Support\Scientific_Camera_Interfaces\Scientific Camera Interfaces\SDK\Native Compact Scientific Camera Toolkit\dlls\Native_64_lib`

以下のディレクトリにコピーします(写真参照)。
`C:\Program Files\Thorlabs\Scientific Imaging\Scientific Camera Support\Scientific_Camera_Interfaces\Scientific Camera Interfaces\SDK\Python Compact Scientific Camera Toolkit\dlls\64_lib`
![5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/71dcd325-dd45-0d8a-3c35-4cd30e4925bb.png)

続いて、以下のディレクトリにある`thorlabs_tsi_camera_python_sdk_package.zip`を管理者権限で解凍します。

`C:\Program Files\Thorlabs\Scientific Imaging\Scientific Camera Support\Scientific_Camera_Interfaces\Scientific Camera Interfaces\SDK\Python Compact Scientific Camera Toolkit`

解凍したフォルダの中に入っている`thorlabs_tsi_sdk`フォルダをコピーして

`C:\Program Files\Thorlabs\Scientific Imaging\Scientific Camera Support\Scientific Camera Interfaces\SDK\Python Compact Scientific Camera Toolkit\examples`

に貼り付けます。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/b6dd85d3-29dd-240a-00ee-8cdbd3c2dd97.png)


**4. 必要なモジュールのインストール**
以下のモジュールをpipまたはcondaコマンドでインストールします。

- pillow >= 5.4.1
- tifffile >= 2019.3.8
- numpy

準備完了です。
ここまで出来たらいったん休憩しましょう。


##サンプルプログラムの動作確認
exampleフォルダに格納されている、
`tkinter_camera_live_view.py`
を実行してみましょう。
以下の写真のようにウィンドウが1つ出現し、動画が表示されます。
今回はテストチャートを観察しています。

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509635/4ff31b6e-df3e-3075-2ac0-9408e683d8e6.png)


##カスタムするためには
サンプルプログラムをカスタムするためのクラスの説明書が用意されています。
以下のファイルを参照してください。

`C:\Program Files\Thorlabs\Scientific Imaging\Documentation\Scientific Camera Documents\Thorlabs_Camera_Python_API_Reference.pdf`