IC Imaging Control (Python)

  • サンプルプログラムトップページ
  • デバイスのオープンとハンドリング
    • デバイスを開く
    • ダイアログボックスを使用してデバイスを開く
    • デバイスプロパティ設定の保存と復元
    • プロパティの設定方法
    • 接続しているカメラ一覧を表示
    • ROIの設定方法
    • オートフォーカスで焦点を調整する範囲を指定
    • デバイスロストの検出と再接続方法
  • イメージの取得
    • 8bit静止画保存
    • 16bit静止画保存
    • Enterキーを押下したときに画像保存
    • メモリーレコーディング
    • AVIファイル保存
  • 画像処理
    • コールバック関数の設定方法(OpenCVで二値化)
    • OpenCVで画像処理して表示する方法
    • ソフトウェアトリガー・外部トリガーの使用方法
    • ステレオカメラで表示
    • 2つのカメラで取得した画像の輝度値を平均してバーに表示する
  • IC Imaging Control3.5(pythonnet編)
    • Qtを使ったデモアプリ(pythonnet編)
    • カメラで取得した画像の輝度値を平均してバーに表示する
      (pythonnet編)
    • 動画保存(MediaStreamSink コーデック:H.264)
    • 露光時間・ゲインを設定し、静止画保存をする(pythonnet編)
  • リンク集

    ICImagingControl WEB APIリファレンスマニュアル/サンプルプログラム

    :日本語対応済み :日本語化準備中
    開発言語 APIリファレンスマニュアル サンプルプログラム
    C 4.0
    ()
    - - 4.0
    ()
    - -
    C++ 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5 3.4
    ()
    C#/VB.NET 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5
    ()
    3.4
    ()
    Python 4.0
    ()
    3.5 3.4
    ()
    4.0
    ()
    3.5 3.4
    ()

デバイスプロパティ設定の保存と復元

概要

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メソッドを関数化した下記のメソッドを用意しています。

tisgrabber.pyの一部より抜粋
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メソッドを使用することも可能です。

▲ このページの先頭に戻る

Copyright © ARGO Corporation. All Rights Reserved.