カメラのエミュレーション#
カメラエミュレーションデバイスには、pylon APIやpylon Viewerを使用してアクセスできます。
概要#
GigE VisionやUSB3 Visionのようなカメラトランスポート層に加えて、pylonはシンプルなカメラエミュレーションデバイスを作成できるトランスポート層を提供してします。これにより、物理的なカメラを必要とせずにアプリケーションを開発できます。また、マルチカメラアプリケーションを開発したい場合や、手元に十分なカメラがない場合にも便利です。
最大256個のカメラエミュレーションデバイスを作成できます。
カメラエミュレーションデバイスには、画像取得と標準カメラ機能のエミュレーションに加え、次のような物理的なカメラにはない機能もあります。
- 画像処理アルゴリズムを最適化するなどの目的で、カスタム試験画像を表示できます。
- 失敗したバッファーを生成して、例外処理ルーチンをテストすることができます。
カメラエミュレーションの有効化#
カメラエミュレーションは、pylon Viewer、pylon APIの、またはその両方で有効にできます。
カメラエミュレーションサポートのインストール#
- pylon for Linuxを使用している場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- pylon for Windowsを使用していて、ランタイム再頒布可能パッケージを介してpylonをインストールした場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- pylon for Windowsを使用しており、pylon Camera 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
- Resulting Frame Rate
- Test Images
- Trigger Mode
- Trigger Software
- Trigger Selector
追加機能#
次の機能は、カメラエミュレーションデバイスのみで使用でき、物理的なBaslerカメラでは使用できません。
カスタムTest Imagesの表示#
標準の試験画像の表示に加えて、カメラエミュレーションでは、ディスクからロードされたカスタム試験画像を表示できます。
情報
- Windowsでは、BMP、JPG、PNG、TIFの画像ファイル形式をロードできます。
- Linuxでは、PNGおよびTIFの画像ファイル形式をロードできます。
カスタム試験画像を表示するには:
TestImageSelector
パラメーターをOff
に設定します。
これにより、標準試験画像の使用が無効になります。ImageFileMode
パラメーターをOn
に設定します。
これにより、カスタム試験画像の使用が無効になります。- 単一の試験画像を表示する場合は、
ImageFilename
パラメーターにフルパスを含む画像ファイル名を指定します。
Example:c:\images\my-test-image.png -
複数の試験画像を表示する場合は、次の手順に従います。
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
ディレクトリーにサブディレクトリーを入れないでください。 - Provide the full path of the directory containing the files in the
ImageFilename
parameter.
Example: c:\images\
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
-
1つ以上の画像を取得して、試験画像を表示します。pylon Viewerに画像を表示する場合は、ツールバーのシングル撮影ボタンまたは連続撮影ボタンをクリックします。
トラブルシューティング#
- カスタム試験画像が表示されない場合(表示されている画像が真っ黒の場合)、pylonはファイルをロードできていません。
ImageFilename
パラメーターに指定されているファイル名またはパスを確認します。ディレクトリー名を指定した場合は、そのディレクトリーにサブディレクトリーが含まれていないことを確認します。 - カスタム試験画像がモノクロで表示されている場合は、カラーピクセルフォーマット(BGR/BGRA/RGB)に切り替えます。
- カスタム試験画像がフルサイズで表示されない場合は、image ROIパラメーター(
Width
、Height
、OffsetX
、OffsetY
)を調整します。
失敗したバッファーの生成#
バッファーの強制失敗機能を使用すると、障害が発生したバッファーを生成して、不良なカメラ接続をシミュレートできます。これは、例外処理ルーチンをテストする場合などに便利です。
失敗したバッファーを生成するには:
- 画像取得を開始します。
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);
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。