コンテンツにスキップ

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

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

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

  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. ImageFilenameパラメーターに、ファイルを含むディレクトリーの絶対パスを指定します。
      例: c:\images\
  5. 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パラメーター(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);
# ** 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を使用して、パラメーターを簡単に設定することもできます。