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

AVIファイル保存

概要

AVIファイル保存する方法について説明します。
H.264/H.265のコーデックを使用する場合には【動画保存(MediaStreamSink コーデック:H.264)】をご覧ください。

サンプルプログラム

サンプル(Python) capture_avi_file_python.zip

サンプルツールの出力

サンプルフォルダにtest.aviファイルが保存されます。
※使用しているPCにインストールされているコーデックに依存しますので上記の例の通り表示されないこともあります。

コード全体

import ctypes 
import tisgrabber as tis

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



def enumCodecCallback(codecname, userdata):
    """
    コーデックを列挙するためのコールバック関数です。
     :param codecname:コーデックの名前
     :param userdata:Pythonオブジェクト、コーデック名を受け取るためのリスト
     :return:0は続行、1は列挙を停止します。
    """
    userdata.append(codecname.decode("utf-8"))
    return 0

enumCodecCallbackfunc = ic.ENUMCODECCB(enumCodecCallback)

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

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

#コーデック一覧を表示
ic.IC_enumCodecs(enumCodecCallbackfunc, codecs)
print("利用可能なコーデック:")
for codec in codecs:
    print(codec)

#デバイスが有効か確認
if(ic.IC_IsDevValid(hGrabber)):
    #コーデックを選択
    #コーデック一覧を表示で表示されたコーデックをセットします。
    codec = ic.IC_Codec_Create(tis.T("MJPEG Compressor"))

    #コーデックのプロパティページがある場合は表示します。
    if ic.IC_Codec_hasDialog(codec):
        ic.IC_Codec_showDialog(codec)

    ic.IC_SetCodec(hGrabber, codec)                         # コーデックをセット
    ic.IC_SetAVIFileName(hGrabber, tis.T("test.avi"))       # ファイル名をセット
    # Aviキャプチャの一時停止
    ic.IC_enableAVICapturePause(hGrabber, 1)                # Aviキャプチャの一時停止

    #ライブスタート開始 引数:0の時非表示、引数:1の時表示
    if ic.IC_StartLive(hGrabber, 1) == tis.IC_SUCCESS:

        ic.IC_MsgBox(tis.T("OKでAVIファイル保存を開始します。"), tis.T("AVI Capture"))
        # Aviキャプチャの再開
        ic.IC_enableAVICapturePause(hGrabber, 0)  

        ic.IC_MsgBox(tis.T("OKでAVIファイル保存を停止します。"), tis.T("AVI Capture"))
        ic.IC_StopLive(hGrabber)
    else:
        ic.IC_MsgBox(tis.T("ライブストリーミングに失敗しました。"), tis.T("AVI Capture"))

    ic.IC_Codec_Release(codec)
else:
    ic.IC_MsgBox(tis.T("No device opened"), tis.T("Simple Live Video"))

ic.IC_ReleaseGrabber(hGrabber)

解説

AVIファイルを保存する手順は下記の通りです。

  • IC_Codec_Createで使用するコーデックを指定
  • IC_Codec_hasDialogでコーデックのプロパティ圧縮率などを指定
  • IC_SetCodecでコーデックをセット
  • IC_SetAVIFileNameでファイル名をセット
  • IC_enableAVICapturePause(hGrabber, 1)でavi保存の一時停止(準備)
  • IC_StartLiveでライブスタート開始
  • IC_enableAVICapturePause(hGrabber, 0)でavi保存開始
  • IC_StopLiveでavi録画停止
  • IC_Codec_Releaseでコーデックオブジェクトを解放

カメラから送られてくる映像を動画として保存するにはコーデックを指定しIC_enableAVICapturePauseメソッドを呼び出すだけでaviファイル保存をすることができるようになっています。録画の一時停止/再開もIC_enableAVICapturePauseを使うことで、簡単に一時停止/再開機能を実装することができます。

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

Copyright © ARGO Corporation. All Rights Reserved.