デバイスプロパティ設定の保存と復元
概要
ICImagingControlでデバイスのプロパティをファイルに保存、復元する方法について説明します。
サンプルプログラム
サンプル(Python) | save_restore_properties_python.zip |
---|
サンプル元:03-open-manually.py
https://github.com/TheImagingSource/IC-Imaging-Control-Samples
サンプルツールの外観
なし(サンプルプログラムのフォルダの中にdevice.xmlが出力されます。)
コード全体
#########
# 解説1
#########
import ctypes
import tisgrabber as tis
#tisgrabber_x64.dllをインポートする
ic = ctypes.cdll.LoadLibrary("./tisgrabber_x64.dll")
tis.declareFunctions(ic)
#ICImagingControlクラスライブラリを初期化します。
#この関数は、このライブラリの他の関数が呼び出される前に1回だけ呼び出す必要があります。
ic.IC_InitLibrary(0)
#########
# 解説2
#########
#xmlファイルをロードする
hGrabber = ic.IC_LoadDeviceStateFromFile(None, tis.T("device.xml"))
#xmlファイルに記載のデバイスが見つからなかったら
if not ic.IC_IsDevValid(hGrabber):
#ダイアログ画面を表示
hGrabber = ic.IC_ShowDeviceSelectionDialog(None)
#########
# 解説3
#########
#デバイスが有効か確認
if(ic.IC_IsDevValid(hGrabber)):
#デバイス情報をxmlに保存する
ic.IC_SaveDeviceStateToFile(hGrabber, tis.T("device.xml"))
#ライブスタート開始 引数:0の時非表示、引数:1の時表示
ic.IC_StartLive(hGrabber, 1)
ic.IC_MsgBox(tis.T("Click OK to stop"), tis.T("Simple Live Video"))
ic.IC_StopLive(hGrabber)
else:
ic.IC_MsgBox(tis.T("No device opened"), tis.T("Simple Live Video"))
ic.IC_ReleaseGrabber(hGrabber)
解説
解説1:importで宣言する
#########
# 解説1
#########
import ctypes
import tisgrabber as tis
#tisgrabber_x64.dllをインポートする
ic = ctypes.cdll.LoadLibrary("./tisgrabber_x64.dll")
tis.declareFunctions(ic)
#ICImagingControlクラスライブラリを初期化します。
#この関数は、このライブラリの他の関数が呼び出される前に1回だけ呼び出す必要があります。
ic.IC_InitLibrary(0)
TISのIC Imaging Controlを使用するために、tisgrabber_x64.dllをインポートし、カメラの映像を取得するためのIC_CreateGrabberでグラバーハンドルを作成します。
解説2:xml読み込み
#########
# 解説2
#########
#xmlファイルをロードする
hGrabber = ic.IC_LoadDeviceStateFromFile(None, tis.T("device.xml"))
#xmlファイルに記載のデバイスが見つからなかったら
if not ic.IC_IsDevValid(hGrabber):
#ダイアログ画面を表示
hGrabber = ic.IC_ShowDeviceSelectionDialog(None)
ICImagingControlにはビデオキャプチャデバイスの現在のプロパティ値をファイルとして保存する方法と、その保存されたファイルからデバイス設定を復元する方法が用意されています。IC_LoadDeviceStateFromFileでdevice.xmlのxmlファイルを読み込みます。
もし、device.xmlに記載のないカメラを読み込んだ場合にはIC_ShowDeviceSelectionDialogでダイアログ画面を表示し、デバイスを選択できるようにしています。
補足
hGrabber = tis.openDevice(ic)
tisgrabber.pyにはIC_LoadDeviceStateFromFileメソッドとIC_SaveDeviceStateToFileメソッドとIC_ShowDeviceSelectionDialogメソッドを関数化した下記のメソッドを用意しています。
def openDevice(ic):
try:
hGrabber = ic.IC_LoadDeviceStateFromFile(None, T("device.xml"))
if not ic.IC_IsDevValid(hGrabber):
hGrabber = ic.IC_ShowDeviceSelectionDialog(None)
except Exception as ex:
hGrabber = ic.IC_ShowDeviceSelectionDialog(None)
if(ic.IC_IsDevValid(hGrabber)):
ic.IC_SaveDeviceStateToFile(hGrabber, T("device.xml"))
return
openDeviceメソッドの内部は下記のようにdevice.xmlが無かったら、Device Dialog画面を表示し、設定が終わればdevice.xmlに自動的に保存するようにしています。以降のサンプルプログラムではopenDeviceメソッドを使っています。
解説3:ライブスタート
#########
# 解説3
#########
#デバイスが有効か確認
if(ic.IC_IsDevValid(hGrabber)):
#ライブスタート開始 引数:0の時非表示、引数:1の時表示
ic.IC_StartLive(hGrabber, 1)
ic.IC_MsgBox(tis.T("Click OK to stop"), tis.T("Simple Live Video"))
ic.IC_StopLive(hGrabber)
else:
ic.IC_MsgBox(tis.T("No device opened"), tis.T("Simple Live Video"))
ic.IC_ReleaseGrabber(hGrabber)
カメラの接続に上手くいけば、上記のようにフレームレートや解像度を指定し、IC_StartLiveメソッドでライブ開始すればカメラの画像をPCに取り込むことができます。なお、フレームレートや解像度を指定しなくてもIC_StartLiveメソッドを使用することも可能です。