カメラのエミュレーション#
カメラエミュレーションデバイスには、pylon APIやpylon Viewerを使用してアクセスできます。
概要#
GigE VisionやUSB3 Visionのようなカメラトランスポート層に加えて、pylonはシンプルなカメラエミュレーションデバイスを作成できるトランスポート層を提供してします。これにより、物理的なカメラを必要とせずにアプリケーションを開発できます。また、マルチカメラアプリケーションを開発したい場合や、手元に十分なカメラがない場合にも便利です。
最大256個のカメラエミュレーションデバイスを作成できます。
カメラエミュレーションデバイスには、画像取得と標準カメラ機能のエミュレーションに加え、次のような物理的なカメラにはない機能もあります。
- 画像処理アルゴリズムを最適化するなどの目的で、カスタム試験画像を表示できます。
- 失敗したバッファーを生成して、例外処理ルーチンをテストすることができます。
カメラエミュレーションの有効化#
カメラエミュレーションは、pylon Viewer、pylon APIの、またはその両方で有効にできます。
カメラエミュレーションサポートのインストール#
- pylon for Linuxを使用している場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- pylon for Windowsを使用していて、ランタイム再頒布可能パッケージを介してpylonをインストールした場合、カメラエミュレーションサポートはデフォルトでインストールされます。
- If you are using pylon for Windows and have installed pylon via the pylon Software Suite installer:
- インストール時に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
に設定します。
これにより、標準試験画像の使用が無効になります。ImageFileMode
パラメーターをOn
に設定します。
これにより、カスタム試験画像の使用が無効になります。- 単一の試験画像を表示する場合は、
ImageFilename
パラメーターにフルパスを含む画像ファイル名を指定します。
Example:c:\images\my-test-image.png -
複数の試験画像を表示する場合は、次の手順に従います。
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
ディレクトリーにサブディレクトリーを入れないでください。 ImageFilename
パラメーターに、ファイルを含むディレクトリーの絶対パスを指定します。
例: c:\images\
- すべての試験画像が1つのディレクトリーに表示されるように配置します。
-
Acquire at least one image to display the test image(s). If you want to display the image(s) in the pylon Viewer, click the single or continuous shot button on the toolbar.
トラブルシューティング#
- カスタム試験画像が表示されない場合(表示されている画像が真っ黒の場合)、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);
# ** 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を使用して、パラメーターを簡単に設定することもできます。