8bit静止画保存
概要
TheImagingSource社のカメラを使って、静止画保存する方法について説明します。
サンプルプログラム
サンプル(Python) | save_image_python.zip |
---|
サンプルツールの出力
実行ファイルのフォルダ内にはsキーを押下した時にjpgファイルが保存されます。
コード全体
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)
#ダイアログ画面を表示
hGrabber = tis.openDevice(ic)
#デバイスが有効か確認
if(ic.IC_IsDevValid(hGrabber)):
#ライブスタート開始 引数:0の時非表示、引数:1の時表示
#ライブ画面は非表示にしています。
ic.IC_StartLive(hGrabber, 0)
key = ""
while key != "q":
print("sキー: 画像を保存")
print("qキー: プログラム終了")
key = input('sキーかqキーを押下してください。:')
if key == "s":
#2秒間フレームが送られてくるのを待つ
if ic.IC_SnapImage(hGrabber, 2000) == tis.IC_SUCCESS:
#test.jpgで保存
ic.IC_SaveImage(hGrabber, tis.T("test.jpg"),
tis.ImageFileTypes['JPEG'], 90)
print("保存しました。")
else:
print("2秒間フレームが送られてきませんでした。")
ic.IC_StopLive(hGrabber)
else:
ic.IC_MsgBox(tis.T("No device opened"), tis.T("Simple Live Video"))
ic.IC_ReleaseGrabber(hGrabber)
解説
if ic.IC_SnapImage(hGrabber, 2000) == tis.IC_SUCCESS:
SnapImageメソッド(ic.IC_SnapImage(hGrabber, 2000) )によって、スナップジョブのキューを作り、ImageBufferコレクションに1枚のフレームをコピーします。メソッドはフレームを取得した時、またはタイムアウト(上記の例では2秒(2,000msec))が発生した時に戻り値を返します。
#JPEGで保存する場合、第四引数は圧縮レベル(下記の例では画像品質1~100のうち90(低い程圧縮率が高い))
#圧縮レベルを下げると画質が落ちますが、保存容量を下げることができます。
ic.IC_SaveImage(hGrabber, tis.T("test.jpg"), tis.ImageFileTypes['JPEG'], 90)
#BMPで保存する場合
ic.IC_SaveImage(hGrabber, tis.T("test.bmp"),tis.ImageFileTypes['BMP'])
リングバッファに保存された画像はIC_SaveImageメソッドによってjpeg,bmp保存することが可能です。