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
    ()

ROI(関心領域)の設定方法

概要

ROI(関心領域)を切り出し、ライブ表示しながら、ROIを移動させる方法について説明します。

サンプルプログラム

サンプル(Python) roi_setting_python.zip

サンプルツールの出力

コード全体

import ctypes 
import tisgrabber as tis
import time

#tisgrabber_x64.dllをインポートする
ic = ctypes.cdll.LoadLibrary("./tisgrabber_x64.dll")
tis.declareFunctions(ic)

#ICImagingControlクラスライブラリを初期化します。
#この関数は、このライブラリの他の関数が呼び出される前に1回だけ呼び出す必要があります。
ic.IC_InitLibrary(0)

#ダイアログ画面を表示
hGrabber = tis.openDevice(ic)

#デバイスが有効か確認
if(ic.IC_IsDevValid(hGrabber)):
    # 解像度を指定
    ic.IC_SetVideoFormat(hGrabber, tis.T("Y800 (1024x768)"))
    # フレームレートを指定
    ic.IC_SetFrameRate(hGrabber, ctypes.c_float(30.0))
    #ライブスタート開始 引数:0の時非表示、引数:1の時表示
    ic.IC_StartLive(hGrabber, 1)
    ic.IC_MsgBox(tis.T("ROIを実行しますのでOKボタンをクリックしてください。"),
                 tis.T("ROI Demo"))
    ic.IC_StopLive(hGrabber)

    # 640x480のサイズでROIを設定します。 使用するカメラの幅と高さが有効であることを確認してください。
    ic.IC_SetVideoFormat(hGrabber, tis.T("Y800 (640x480)")) #640x200など任意のサイズに設定可能です。
    ic.IC_SetFrameRate(hGrabber, ctypes.c_float(30.0))

    # センサーのROIを移動するには、パーシャルスキャンオートセンターを無効にする必要があります
    ic.IC_SetPropertySwitch(hGrabber, tis.T("Partial scan"),
                            tis.T("Auto-center"), 0)

    ic.IC_StartLive(hGrabber, 1)

    # センサーのROIをx座標とy座標で移動します。 
    # ライブ表示中に実行されます。
    x = 0
    for y in range(0, 768-480):
        ic.IC_SetPropertyValue(hGrabber, tis.T("Partial scan"),
                               tis.T("Y Offset"), y)
        ic.IC_SetPropertyValue(hGrabber, tis.T("Partial scan"),
                               tis.T("X Offset"), x)
        x = x + 1
        time.sleep(0.05)

    ic.IC_MsgBox(tis.T("元の画面に戻りますのでOKボタンをクリックしてください。"), tis.T("ROI Demo"))
    ic.IC_StopLive(hGrabber)

    # オリジナルの解像度・フレームレートに戻す
    ic.IC_SetVideoFormat(hGrabber, tis.T("Y800 (1024x768)"))
    ic.IC_SetFrameRate(hGrabber, ctypes.c_float(30.0))

    # パーシャルスキャンオートセンターを有効にして、ROIが再びセンサーの中央にくるようにします。
    ic.IC_SetPropertySwitch(hGrabber, tis.T("Partial scan"),
                            tis.T("Auto-center"), 1)

    ic.IC_StartLive(hGrabber, 1)
    ic.IC_MsgBox(tis.T("OKボタンで終了します。"), tis.T("ROI Demo"))
    ic.IC_StopLive(hGrabber)
else:
    ic.IC_MsgBox(tis.T("No device opened"), tis.T("ROI Demo"))
ic.IC_ReleaseGrabber(hGrabber)

解説

ic.IC_SetVideoFormat(hGrabber, tis.T("Y800 (1024x768)"))

まずはY800(モノクロの8bit)形式で1024x768の解像度で画像を取得します。
ここでは例として1024x768としていますがお使いのカメラのスペックの解像度を選択ください。

ic.IC_SetVideoFormat(hGrabber, tis.T("Y800 (640x480)")) 

上記の例ではY800(モノクロの8bit)形式で1024x768の解像度で画像を切り出していますが、640x200など任意のの大きさに切出すことができます。

ic.IC_SetPropertySwitch(hGrabber, tis.T("Partial scan"),tis.T("Auto-center"), 0)

センサーのどこの位置で切り出しをするのか指定することができます。
デフォルトではセンサーの中央を切り出すモードになっているのでIC_SetPropertySwitchメソッドでOFFにします。

# ライブスタート開始
ic.IC_StartLive(hGrabber, 1)

# センサーのROIをx座標とy座標で移動します。 
# ライブ表示中に実行されます。
x = 0
for y in range(0, 768-480):
    ic.IC_SetPropertyValue(hGrabber, tis.T("Partial scan"),
                           tis.T("Y Offset"), y)
    ic.IC_SetPropertyValue(hGrabber, tis.T("Partial scan"),
                           tis.T("X Offset"), x)
    x = x + 1
    time.sleep(0.05)

Partial scanのプロパティによって切り出された位置をxy座標で指定しています。
ライブ表示しながらPartial scanを変更できるのでサンプルの出力にあるように画面で確認しながら画素切り出しの位置を指定することができます。

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

Copyright © ARGO Corporation. All Rights Reserved.