VideoFormat・ビニング/スキッピング・ROIの設定
概要
このプログラムは、カメラ、ビデオフォーマット(カラーフォーマットやビニング/スキッピング)、およびフレームレートを設定して、ライブ映像を表示するアプリケーションです。各設定をコード内に直接ハードコーディングすることで、最小限の記述で確実に動作する構成を実現しています。設定値を変更すれば、簡単に異なる条件で動作させることも可能です。
サンプルプログラム
Software | Software IC Imaging Control 3.5, Visual Studio™ 2022 |
---|---|
サンプル(C#) | ROI_Binning_VideoFormat_cs_3.5.zip |
サンプルツールの外観
VideoFormatの設定
private void Form1_Load(object sender, EventArgs e)
{
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
// 解説2:ビデオフォーマットを指定
icImagingControl1.VideoFormat = "RGB32 (1920x1200)";
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
}
解説1:デバイスを指定
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
「DFK33UR0234」はカメラの型番で、パソコンに接続されている複数のカメラの中から、この名前のカメラを選んで使うように設定しています。カメラの型番を間違えると、デバッグを実行時に下記のようにエラーになります。
解説2:ビデオフォーマットを指定
// 解説2:ビデオフォーマットを指定
icImagingControl1.VideoFormat = "RGB32 (1920x1200)";
ここでは、カメラの映像形式(ビデオフォーマット)を設定しています。主に選択できるフォーマットには、RGB64(16bitカラー)、RGB32(8bitカラー)、YUY2、Y800(8bitモノクロ)、Y16(16bitモノクロ)などがあります。
「RGB32 (1920×1200)」の場合、カラーフォーマットがRGB32、解像度が1920×1200ピクセルであることを指します。
カメラのビデオフォーマットを誤って指定すると、デバッグ実行時に下記のようにエラーが発生します。
どのカラーフォーマットが使用可能かを確認するには、次のコードを追加して、デバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると、デバイス設定画面が表示されます。画面内の「Video Format」欄に、使用可能なビデオフォーマットの一覧が表示されます。
ここに表示されているカラーフォーマット(例:Y800、RGB32 など)、解像度をicImagingControl1.VideoFormatに指定するようにしてください。
解説3:フレームレートの設定
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
ここではカメラのフレームレート(1秒間に何枚の画像を取得するか)を設定しています。この例では30fpsを指定しています。なお、「0」や「10000」のように実際には使用できない値を指定しても、エラーにはならず、下記のように自動的に使用可能な最も近いフレームレートに置き換えられて動作します。ただし、この場合は意図しない動作になる可能性があるため、事前に使用可能なフレームレートを確認したうえで正しく指定するようにしてください。
利用可能なフレームレートを確認するには、次のコードを実行してデバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると設定画面が開き、「Frame Rate(FPS)」の項目に、そのカメラとフォーマットで使用可能なフレームレート一覧が表示されます。
ここに表示されている数値をもとに、DeviceFrameRateを正しく設定してください。
解説4:ライブスタート
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
これはカメラからのライブ映像の取り込みを開始する命令です。これを実行することで、カメラが画像の取得を開始し、指定されたビデオフォーマット・フレームレートに従って映像が画面上に表示されるようになります。この命令はすべての設定(デバイスの指定、ビデオフォーマット、フレームレートなど)が完了した後に呼び出す必要があります。設定が不完全な状態で呼び出すと、エラーが発生したり、正しく映像が表示されなかったりすることがあります。
ビニング・スキッピングの設定
private void Form1_Load(object sender, EventArgs e)
{
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
// 解説2:ビニング・スキッピングを指定
icImagingControl1.VideoFormat = "RGB32 (960x600) [Skipping 2x]";
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
}
解説1:デバイスを指定
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
「DFK33UR0234」はカメラの型番で、パソコンに接続されている複数のカメラの中から、この名前のカメラを選んで使うように設定しています。カメラの型番を間違えると、デバッグを実行時に下記のようにエラーになります。
解説2:ビニング・スキッピングを指定
// 解説2:ビニング・スキッピングを指定
icImagingControl1.VideoFormat = "RGB32 (960x600) [Skipping 2x]";
ここでは、ビニング・スキッピングを含むカメラの映像形式(ビデオフォーマット)を設定しています。主に選択できるフォーマットには、RGB64(16bitカラー)、RGB32(8bitカラー)、YUY2、Y800(8bitモノクロ)、Y16(16bitモノクロ)などがあります。"RGB32 (960x600)" の場合、カラーフォーマットがRGB32、解像度が960×600ピクセルであることを指します。さらに、フォーマット名の末尾に "[Skipping 2x]" や "[Binning 2x]" が付けることで、スキッピング(画素を間引く)やビニング(複数画素をまとめる)といった処理を指定することができます。
カメラのビデオフォーマットを誤って指定すると、デバッグ実行時に下記のようにエラーが発生します。
どのカラーフォーマットが使用可能かを確認するには、次のコードを追加して、デバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると、デバイス設定画面が表示されます。画面内の「Video Format」欄に、使用可能なビデオフォーマットの一覧が表示されます。ビニング・スキッピングの場合はフォーマット名の末尾に "[Skipping 2x]" や "[Binning 2x]" が付いているのでその中から選択してください。
解説3:フレームレートの設定
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
ここではカメラのフレームレート(1秒間に何枚の画像を取得するか)を設定しています。この例では30fpsを指定しています。なお、「0」や「10000」のように実際には使用できない値を指定しても、エラーにはならず、下記のように自動的に使用可能な最も近いフレームレートに置き換えられて動作します。ただし、この場合は意図しない動作になる可能性があるため、事前に使用可能なフレームレートを確認したうえで正しく指定するようにしてください。
利用可能なフレームレートを確認するには、次のコードを実行してデバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると設定画面が開き、「Frame Rate(FPS)」の項目に、そのカメラとフォーマットで使用可能なフレームレート一覧が表示されます。
ここに表示されている数値をもとに、DeviceFrameRateを正しく設定してください。
解説4:ライブスタート
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
これはカメラからのライブ映像の取り込みを開始する命令です。これを実行することで、カメラが画像の取得を開始し、指定されたビデオフォーマット・フレームレートに従って映像が画面上に表示されるようになります。この命令はすべての設定(デバイスの指定、ビデオフォーマット、フレームレートなど)が完了した後に呼び出す必要があります。設定が不完全な状態で呼び出すと、エラーが発生したり、正しく映像が表示されなかったりすることがあります。
ROIの設定
private void Form1_Load(object sender, EventArgs e)
{
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
// 解説2:ROIを指定
icImagingControl1.VideoFormat = "RGB32 (960x602)";
icImagingControl1.VCDPropertyItems.Find<VCDSwitchProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanAutoCenter).Switch =false; // 中央を基準に切り出すかどうか(false = 左上からのオフセット指定)
icImagingControl1.VCDPropertyItems.Find<VCDRangeProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanOffsetX).Value = 0; // X方向のオフセット(画面左からの位置)
icImagingControl1.VCDPropertyItems.Find<VCDRangeProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanOffsetY).Value = 0; // Y方向のオフセット(画面上からの位置)
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
}
解説1:デバイスを指定
// 解説1:デバイスを指定
icImagingControl1.Device = "DFK 33UR0234";
「DFK33UR0234」はカメラの型番で、パソコンに接続されている複数のカメラの中から、この名前のカメラを選んで使うように設定しています。カメラの型番を間違えると、デバッグを実行時に下記のようにエラーになります。
解説2:ROIを指定
// 解説2:ROIを指定
icImagingControl1.VideoFormat = "RGB32 (960x602)";
カメラの映像形式(ビデオフォーマット)にてカラーフォーマットと共にROIを指定します。主に選択できるフォーマットには、RGB64(16bitカラー)、RGB32(8bitカラー)、YUY2、Y800(8bitモノクロ)、Y16(16bitモノクロ)などがあります。「RGB32 (960x602)」の場合、カラーフォーマットがRGB32、解像度が960×602ピクセルに切り出しているであることを指します。
カメラのビデオフォーマットを誤って指定すると、デバッグ実行時に下記のようにエラーが発生します。
どのカラーフォーマットが使用可能かを確認するには、次のコードを追加して、デバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると、デバイス設定画面が表示されます。画面内の「Video Format」欄にある[Customize]ボタンをクリックすると、[Select Custom Format]というウィンドウが開きます。その画面で、ROI(切り出し範囲)を確認することができます。「Select Custom Format」で切り出し範囲の幅(Width)と高さ(Height)を確認したら、その値をicImagingControl1.VideoFormatに指定するようにしてください。
icImagingControl1.VCDPropertyItems.Find<VCDSwitchProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanAutoCenter).Switch =false; // 中央を基準に切り出すかどうか(false = 左上からのオフセット指定)
icImagingControl1.VCDPropertyItems.Find<VCDRangeProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanOffsetX).Value = 0; // X方向のオフセット(画面左からの位置)
icImagingControl1.VCDPropertyItems.Find<VCDRangeProperty>(VCDGUIDs.VCDID_PartialScanOffset, VCDGUIDs.VCDElement_PartialScanOffsetY).Value = 0; // Y方向のオフセット(画面上からの位置)
次に、ROI(Region of Interest)の切り出し位置を指定します。この設定は、デバイスダイアログ画面の[Property]ボタンをクリック→[Partial Scan]タブ内の各項目を操作することで行います。設定可能な範囲については、同タブ内に表示される情報をご確認ください。ダイアログ画面で設定値を確認したうえで、その数値をプログラム上にも反映させたい場合には、IC Imaging ControlのAPIであるVCDPropertyItemsを使用して、カメラの各種プロパティにアクセスします。ROIの開始位置は、「PartialScanOffset(部分スキャンの開始位置)」というプロパティを操作することで制御できます。デバイスダイアログ画面では「Auto-center」のチェックが外れており、X Offsetを「0」、Y Offsetを「0」としていますので、PartialScanAutoCenterプロパティをfalse(ROIの基準位置を画像中央から左上に変更)、OffsetXおよびOffsetYを「0(画像の左上隅X=0, Y=0からの切り出し)」にしています。なお、OffsetXやOffsetYにたとえば「20000」のような実際には使用できない値を指定してもエラーにはならず、自動的に使用可能な最も近い値に補正されて動作します。
解説3:フレームレートの設定
// 解説3:フレームレートを指定
icImagingControl1.DeviceFrameRate = 30.0f;
ここではカメラのフレームレート(1秒間に何枚の画像を取得するか)を設定しています。この例では30fpsを指定しています。なお、「0」や「10000」のように実際には使用できない値を指定しても、エラーにはならず、下記のように自動的に使用可能な最も近いフレームレートに置き換えられて動作します。ただし、この場合は意図しない動作になる可能性があるため、事前に使用可能なフレームレートを確認したうえで正しく指定するようにしてください。
利用可能なフレームレートを確認するには、次のコードを実行してデバイス設定ダイアログを表示してください。
icImagingControl1.ShowDeviceSettingsDialog();
このコードを実行すると設定画面が開き、「Frame Rate(FPS)」の項目に、そのカメラとフォーマットで使用可能なフレームレート一覧が表示されます。
ここに表示されている数値をもとに、DeviceFrameRateを正しく設定してください。
解説4:ライブスタート
// 解説4:ライブスタート
icImagingControl1.LiveStart(); // カメラのライブを開始
これはカメラからのライブ映像の取り込みを開始する命令です。これを実行することで、カメラが画像の取得を開始し、指定されたビデオフォーマット・フレームレートに従って映像が画面上に表示されるようになります。この命令はすべての設定(デバイスの指定、ビデオフォーマット、フレームレートなど)が完了した後に呼び出す必要があります。設定が不完全な状態で呼び出すと、エラーが発生したり、正しく映像が表示されなかったりすることがあります。