콘텐츠로 바로 가기
STAGING SERVER
DEVELOPMENT SERVER

카메라 에뮬레이션#

카메라 에뮬레이션 기능을 사용하면 컴퓨터에 실제 카메라 장치를 연결하지 않고도 기본적인 카메라 기능을 테스트하고 테스트 이미지를 생성할 수 있습니다.

pylon API 및 pylon Viewer 를 사용하여 카메라 에뮬레이션 장치에 액세스할 수 있습니다.

개요#

GigE Vision이나 USB3 Vision 와 같은 카메라 전송 계층 외에도, pylon은 간단한 카메라 에뮬레이션 장치를 생성할 수 있는 전송 계층을 제공합니다. 이를 통해 물리적 카메라 없이도 애플리케이션을 개발할 수 있습니다. 또한, 멀티 카메라 애플리케이션을 개발하고자 하지만 사용할 카메라가 충분하지 않은 경우에도 유용합니다.

최대 256개의 카메라 에뮬레이션 장치를 생성할 수 있습니다.

카메라 에뮬레이션 장치는 이미지 획득 및 표준 카메라 기능을 에뮬레이트할 뿐만 아니라, 실제 카메라에서는 제공하지 않는 다음과 같은 기능도 제공합니다:

카메라 에뮬레이션 활성화#

pylon Viewer, pylon API 중 하나 또는 둘 모두에서 카메라 에뮬레이션을 활성화할 수 있습니다.

카메라 에뮬레이션 지원 설치#

  • Linux 용 pylon을 사용 중인 경우, 카메라 에뮬레이션 지원 기능이 기본적으로 설치되어 있습니다.
  • Windows 용 pylon을 사용하고 있으며 런타임 재배포 가능 패키지를 통해 pylon을 설치한 경우, 카메라 에뮬레이션 지원 기능이 기본적으로 설치됩니다.
  • Windows 용으로 pylon을 사용하고 있으며, pylon Software Suite 설치 프로그램을 통해 pylon을 설치한 경우:
    • 설치 과정에서 ‘카메라 사용자’ 또는 ‘개발자’ 프로필을 선택한 경우, 카메라 에뮬레이션 지원 기능이 기본적으로 설치됩니다.
    • 설치 과정에서 ‘사용자 지정’ 프로필을 선택한 경우, ‘카메라 에뮬레이션 지원’ 옵션을 선택해야만 카메라 에뮬레이션 지원 기능이 설치됩니다. 해당 옵션을 선택하지 않았다면 설치 프로그램을 다시 실행하여 해당 옵션을 선택하십시오.

에서 카메라 에뮬레이션 활성화 pylon Viewer#

pylon Viewer 에서 카메라 에뮬레이션을 활성화하려면:

  1. 카메라 에뮬레이션 지원 기능이 설치되어 있는지 확인하십시오.
  2. pylon Viewer 의 ‘도구 ’ 메뉴에서 ‘옵션’을 클릭합니다.
  3. '옵션' 대화 상자에서 '카메라 에뮬레이션'을 클릭합니다.
  4. ‘카메라 에뮬레이션 ( Camera Emulation )’ 페이지에서 원하는 카메라 에뮬레이션 장치 수를 입력하고 ‘확인(OK)’을 클릭합니다.
    잠시 기다리면 ‘장치 ( Devices )’ 창에 에뮬레이션 장치가 표시됩니다.
    ‘카메라( pylon Viewer)’를 통해 해당 장치에 액세스할 수 있습니다. ‘카메라( pylon API)’에서도 해당 장치에 액세스하려면 아래 지침을 따르십시오.

정보

카메라 에뮬레이션 장치 수가 0으로 설정된 경우, ‘장치’ 창에 ‘카메라 에뮬레이션’ 노드가 표시되지 않습니다.

에서 카메라 에뮬레이션 활성화 pylon API#

pylon API 에서 카메라 에뮬레이션을 활성화하려면:

  1. 카메라 에뮬레이션 지원 기능이 설치되어 있는지 확인하십시오.
  2. [추가] 시스템 환경 변수 이름이 PYLON_CAMEMU 그리고 해당 값을 원하는 에뮬레이션 장치 수로 설정합니다.
    예: PYLON_CAMEMU=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 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
    예: c:\images\my-test-image.png
  4. 여러 개의 테스트 이미지를 표시하려면:

    1. 표시할 모든 테스트 이미지를 하나의 디렉터리에 넣어 주십시오.
      이 디렉터리에는 하위 디렉터리가 포함되어서는 안 됩니다.
    2. 다음에 있는 파일이 포함된 디렉터리의 전체 경로를 입력하십시오. ImageFilename 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
      예: c:\images\
  5. 테스트 이미지를 표시하려면 이미지를 하나 이상 촬영하십시오. pylon Viewer 에서 이미지를 표시하려면 툴바에 있는 단일 촬영 또는 연속 촬영 버튼을 클릭하십시오.

문제 해결#

  • 사용자 지정 테스트 이미지가 표시되지 않는 경우, 즉 표시된 이미지가 완전히 검은색인 경우, pylon이 파일을 불러오지 못한 것입니다. 다음에서 지정된 파일 이름이나 경로를 확인해 보십시오. ImageFilename 매개변수. 디렉터리 이름을 지정한 경우, 해당 디렉터리에 하위 디렉터리가 포함되어 있지 않은지 확인하십시오.
  • 사용자 지정 테스트 이미지가 흑백으로 표시되는 경우, 컬러 픽셀 형식 (BGR/BGRA/RGB)으로 전환하십시오.
  • 사용자 지정 테스트 이미지가 전체 크기로 표시되지 않는 경우, 다음을 조정하십시오. 이미지 ROI 매개변수 (Width, Height, OffsetX및 OffsetY).
    이미지 크기가 4096 x 4096보다 큰 경우: 다음을 설정하기 전에 Width 및 Height 매개변수를 설정할 때는 다음 사항을 확인하십시오. WidthMax 및 HeightMax 매개변수 값이 올바른 최대 이미지 크기에 맞춰 조정됩니다.

오류가 발생한 버퍼 생성#

'Force Failed Buffer' 기능을 사용하면 버퍼 오류를 발생시켜 카메라 연결 오류 상황을 시뮬레이션할 수 있습니다. 이는 예를 들어, 예외 처리 루틴을 테스트하는 데 유용할 수 있습니다.

오류가 발생한 버퍼를 생성하려면:

  1. 이미지 취득을 시작합니다.
  2. 파라미터를 원하는 ForceFailedBufferCount 생성하려는 오류 발생 버퍼의 수에 해당하는 매개변수를 입력하세요.
  3. 다음을 실행합니다. ForceFailedBuffer command.
    이제 카메라 에뮬레이션 장치가 손상된 이미지를 생성하게 됩니다. 손상된 이미지의 개수는 ForceFailedBufferCount 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.

샘플 코드#

// ** 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를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.