カメラのエミュレーション#
カメラエミュレーションデバイスには、pylon APIやpylon Viewerを使用してアクセスできます。
概要#
GigE VisionやUSB3 Visionのようなカメラトランスポート層に加えて、pylonはシンプルなカメラエミュレーションデバイスを作成できるトランスポート層を提供してします。これにより、物理的なカメラを必要とせずにアプリケーションを開発できます。また、マルチカメラアプリケーションを開発したい場合や、手元に十分なカメラがない場合にも便利です。
最大256個のカメラエミュレーションデバイスを作成できます。
カメラエミュレーションデバイスには、画像取得と標準カメラ機能のエミュレーションに加え、次のような物理的なカメラにはない機能もあります。
- 画像処理アルゴリズムを最適化するなどの目的で、カスタム試験画像を表示できます。
- 失敗したバッファーを生成して、例外処理ルーチンをテストすることができます。
カメラエミュレーションの有効化#
カメラエミュレーションは、pylon Viewer、pylon APIの、またはその両方で有効にできます。
カメラエミュレーションサポートのインストール#
- pylon for Linuxを使用している場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- pylon for Windowsを使用していて、ランタイム再頒布可能パッケージを介してpylonをインストールした場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- Windows用pylonを使用しており、pylon Software Suiteインストーラー経由でpylonをインストールしている場合:
- インストール時にCamera UserまたはDeveloperプロファイルを選択した場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- インストール時にCustomプロファイルを選択した場合、カメラエミュレーションサポートはCamera Emulation Supportオプションを選択した場合にのみインストールされます。選択しなかった場合は、インストーラーを再度実行して、そのオプションを選択してください。
pylon Viewerでカメラエミュレーションを有効にする#
pylon Viewerでカメラエミュレーションを有効にするには:
- カメラエミュレーションサポートがインストールされていることを確認します。
- pylon ViewerのToolsメニューで、Optionsをクリックします。
- Optionsダイアログで、Camera Emulationをクリックします。
- Camera Emulationページで、必要なカメラエミュレーションデバイスの数を入力し、OKをクリックします。
少し待つと、エミュレーションデバイスがDevicesペインに表示されます。
pylon Viewerを使用してアクセスできます。pylon API内のデバイスにもアクセスする場合は、以下の手順に従います。
情報
カメラエミュレーションデバイスの数が0に設定されている場合、Camera EmulationノードはDevicesペインに表示されません。
pylon APIでカメラエミュレーションを有効にする#
pylon APIでカメラエミュレーションを有効にするには:
- カメラエミュレーションサポートがインストールされていることを確認します。
- 次を追加します。 システム環境変数 名前:
PYLON_CAMEMU、その値を希望するエミュレーションデバイスの数に設定します。
例:PYLON_CAMEMU=2
これにより、2つのエミュレーションデバイスが提供されます。
これらはpylon APIを使用してアクセスできます。pylon Viewerでもデバイスにアクセスする場合は、以下に従ってください。 上記の手順.
情報
もし PYLON_CAMEMU が設定されていないか、0に設定されている場合、エミュレーションデバイスは使用できません。
標準的なカメラ機能#
カメラエミュレーションデバイスは、次の標準カメラ機能をエミュレートできます。
- Acquisition Frame Rate
- Acquisition Status
- Device Information Parameters
- Exposure Mode
- Exposure Time
- Gain
- Image ROI
- Pixel Format
- 結果として得られるAcquisition Frame Rate
- Test Images
- トリガー画像取得
追加機能#
次の機能は、カメラエミュレーションデバイスのみで使用でき、物理的なBaslerカメラでは使用できません。
カスタムTest Imagesの表示#
標準の試験画像の表示に加えて、カメラエミュレーションでは、ディスクからロードされたカスタム試験画像を表示できます。
情報
- Windowsでは、BMP、JPG、PNG、TIFの画像ファイル形式をロードできます。
- Linuxでは、PNGおよびTIFの画像ファイル形式をロードできます。
カスタム試験画像を表示するには:
- パラメーターを
TestImageSelectorパラメータをOff.
これにより、標準の Test Images の使用が無効になります。 - パラメーターを
ImageFileModeパラメータをOn.
これにより、カスタムの Test Images の使用が有効になります。 - を表示する場合 単一の Test Images、画像ファイル名をフルパスで指定します。
ImageFilenameパラメータ。
例: c:\images\my-test-image.png -
複数の試験画像を表示する場合は、次の手順に従います。
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
ディレクトリーにサブディレクトリーを入れないでください。 - ファイルが含まれているディレクトリのフルパスを指定します。
ImageFilenameパラメータ。
例: c:\images\
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
-
Test Imagesを表示するには、少なくとも1つの画像を取り込みます。pylon Viewerで画像を表示する場合は、ツールバーのシングルショットまたは連続撮影ボタンをクリックします。
トラブルシューティング#
- カスタムの Test Images が表示されない場合(つまり、表示された画像が真っ黒である場合)、pylonがファイルを読み込めませんでした。で指定したファイル名またはパスを確認してください。
ImageFilenameパラメータ。ディレクトリ名を指定した場合は、そのディレクトリにサブディレクトリが含まれていないことを確認してください。 - カスタム試験画像がモノクロで表示されている場合は、カラーピクセルフォーマット(BGR/BGRA/RGB)に切り替えます。
- カスタムの Test Images がフルサイズで表示されない場合は、調整してください。 画像ROI パラメータ(
Width,Height,OffsetXおよびOffsetYを使用します。
画像が 4096 x 4096 より大きい場合:設定する前にWidthおよびHeightパラメータを確認し、WidthMaxおよびHeightMaxパラメータの値が正しい最大画像サイズに調整されていることを確認してください。
失敗したバッファーの生成#
バッファーの強制失敗機能を使用すると、障害が発生したバッファーを生成して、不良なカメラ接続をシミュレートできます。これは、例外処理ルーチンをテストする場合などに便利です。
失敗したバッファーを生成するには:
- 画像取得を開始します。
- パラメーターを
ForceFailedBufferCountパラメータに、生成する失敗したバッファの数を設定します。 - 実行します:
ForceFailedBufferコマンド。
これで、カメラエミュレーションデバイスによって破損した画像が生成されます。破損した画像の数は、次の値によって異なります。ForceFailedBufferCountパラメータ。
外部リンク#
サンプルコード#
// ** Custom Test Images **
// Disable standard test images
camera.TestImageSelector.SetValue(TestImageSelector_Off);
// Enable custom test images
camera.ImageFileMode.SetValue(ImageFileMode_On);
// Load custom test image from disk
camera.ImageFilename.SetValue("c:\\images\\image1.png");
// ** Force Failed Buffer **
// Set the number of failed buffers to generate to 40
camera.ForceFailedBufferCount.SetValue(40);
// Generate 40 failed buffers
camera.ForceFailedBuffer.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// ** Custom Test Images **
// Disable standard test images
CEnumParameter(nodemap, "TestImageSelector").SetValue("Off");
// Enable custom test images
CEnumParameter(nodemap, "ImageFileMode").SetValue("On");
// Load custom test image from disk
CStringParameter(nodemap, "ImageFilename").SetValue("c:\\images\\image1.png");
// ** Force Failed Buffer **
// Set the number of failed buffers to generate to 40
CIntegerParameter(nodemap, "ForceFailedBufferCount").SetValue(40);
// Generate 40 failed buffers
CCommandParameter(nodemap, "ForceFailedBuffer").Execute();
// ** Custom Test Images **
// Disable standard test images
camera.Parameters[PLCamera.TestImageSelector].SetValue(PLCamera.TestImageSelector.Off);
// Enable custom test images
camera.Parameters[PLCamera.ImageFileMode].SetValue(PLCamera.ImageFileMode.On);
// Load custom test image from disk
camera.Parameters[PLCamera.ImageFilename].SetValue("c:\\images\\image1.png");
// ** Force Failed Buffer **
// Set the number of failed buffers to generate to 40
camera.Parameters[PLCamera.ForceFailedBufferCount].SetValue(40);
// Generate 40 failed buffers
camera.Parameters[PLCamera.ForceFailedBuffer].Execute();
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* ** Custom Test Images ** */
/* Disable standard test images */
errRes = PylonDeviceFeatureFromString(hdev, "TestImageSelector", "Off");
CHECK(errRes);
/* Enable custom test images */
errRes = PylonDeviceFeatureFromString(hdev, "ImageFileMode", "On");
CHECK(errRes);
/* Load custom test image from disk */
errRes = PylonDeviceFeatureFromString(hdev, "ImageFilename", "c:\\images\\image1.png");
CHECK(errRes);
/* ** Force Failed Buffer ** */
/* Set the number of failed buffers to generate to 40 */
errRes = PylonDeviceSetIntegerFeature(hdev, "ForceFailedBufferCount", 40);
CHECK(errRes);
/* Generate 40 failed buffers */
errRes = PylonDeviceExecuteCommandFeature(hdev, "ForceFailedBuffer");
CHECK(errRes);
# ** Custom Test Images **
# Disable standard test images
camera.TestImageSelector.Value = "Off"
# Enable custom test images
camera.ImageFileMode.Value = "On"
# Load custom test image from disk
camera.ImageFilename.Value = "c:\\images\\image1.png"
# ** Force Failed Buffer **
# Set the number of failed buffers to generate to 40
camera.ForceFailedBufferCount.Value = 40
# Generate 40 failed buffers
camera.ForceFailedBuffer.Execute()
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。