コンテンツにスキップ

カメラのエミュレーション#

カメラエミュレーション機能を使用すると、物理的なカメラデバイスをコンピューターに接続しなくても、基本的なカメラ機能をテストしたり、テスト画像を作成したりできます。

カメラエミュレーションデバイスには、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でカメラエミュレーションを有効にするには:

  1. カメラエミュレーションサポートがインストールされていることを確認します。
  2. pylon ViewerのToolsメニューで、Optionsをクリックします。
  3. Optionsダイアログで、Camera Emulationをクリックします。
  4. Camera Emulationページで、必要なカメラエミュレーションデバイスの数を入力し、OKをクリックします。
    少し待つと、エミュレーションデバイスがDevicesペインに表示されます。
    pylon Viewerを使用してアクセスできます。pylon API内のデバイスにもアクセスする場合は、以下の手順に従います。

情報

カメラエミュレーションデバイスの数が0に設定されている場合、Camera EmulationノードはDevicesペインに表示されません。

pylon APIでカメラエミュレーションを有効にする#

pylon APIでカメラエミュレーションを有効にするには:

  1. カメラエミュレーションサポートがインストールされていることを確認します。
  2. PYLON_CAMEMUというシステム環境変数を追加し、その値を目的のエミュレーションデバイス数に設定します。
    PYLON_CAMEMU=2
    これにより、2つのエミュレーションデバイスが使用できます。
    pylon APIを使用してアクセスできます。pylon Viewer内のデバイスにもアクセスする場合は、上記の手順に従います。

情報

PYLON_CAMEMUが設定されていないか0に設定されている場合、エミュレーションデバイスは使用できません。

標準的なカメラ機能#

カメラエミュレーションデバイスは、次の標準カメラ機能をエミュレートできます。

追加機能#

次の機能は、カメラエミュレーションデバイスのみで使用でき、物理的なBaslerカメラでは使用できません

カスタムTest Imagesの表示#

標準の試験画像の表示に加えて、カメラエミュレーションでは、ディスクからロードされたカスタム試験画像を表示できます。

情報

  • Windowsでは、BMP、JPG、PNG、TIFの画像ファイル形式をロードできます。
  • Linuxでは、PNGおよびTIFの画像ファイル形式をロードできます。

カスタム試験画像を表示するには:

  1. TestImageSelectorパラメーターをOffに設定します。
    これにより、標準試験画像の使用が無効になります。
  2. ImageFileModeパラメーターをOnに設定します。
    これにより、カスタム試験画像の使用が無効になります。
  3. 単一の試験画像を表示する場合は、ImageFilenameパラメーターにフルパスを含む画像ファイル名を指定します。
    Example:c:\images\my-test-image.png
  4. 複数の試験画像を表示する場合は、次の手順に従います。

    1. すべての試験画像が1つのディレクトリーに表示されるように配置します。
      ディレクトリーにサブディレクトリーを入れないでください。
    2. Provide the full path of the directory containing the files in the ImageFilename parameter.
      Example: c:\images\
  5. 1つ以上の画像を取得して、試験画像を表示します。pylon Viewerに画像を表示する場合は、ツールバーのシングル撮影ボタンまたは連続撮影ボタンをクリックします。

トラブルシューティング#

  • カスタム試験画像が表示されない場合(表示されている画像が真っ黒の場合)、pylonはファイルをロードできていません。ImageFilenameパラメーターに指定されているファイル名またはパスを確認します。ディレクトリー名を指定した場合は、そのディレクトリーにサブディレクトリーが含まれていないことを確認します。
  • カスタム試験画像がモノクロで表示されている場合は、カラーピクセルフォーマット(BGR/BGRA/RGB)に切り替えます。
  • カスタム試験画像がフルサイズで表示されない場合は、image ROIパラメーター(WidthHeightOffsetXOffsetY)を調整します。

失敗したバッファーの生成#

バッファーの強制失敗機能を使用すると、障害が発生したバッファーを生成して、不良なカメラ接続をシミュレートできます。これは、例外処理ルーチンをテストする場合などに便利です。

失敗したバッファーを生成するには:

  1. 画像取得を開始します。
  2. ForceFailedBufferCountパラメーターに、生成したい失敗したバッファーの数を設定します。
  3. 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を使用して、パラメーターを簡単に設定することもできます。

トップに戻る