Camera Emulation#
pylon API와 pylon Viewer를 사용하여 카메라 에뮬레이션 장치에 액세스할 수 있습니다.
개요#
GigE Vision이나 USB3 Vision 같은 카메라 전송 계층 외에도, pylon은 간단한 카메라 에뮬레이션 장치를 생성할 수 있는 전송 계층을 제공합니다. 이를 통해 실제 카메라 없이도 애플리케이션을 개발할 수 있습니다. 또한 여러 대의 카메라를 사용하는 애플리케이션을 개발해야 하지만 수중에 카메라가 충분하지 않은 경우에도 유용합니다.
최대 256개의 카메라 에뮬레이션 장치를 생성할 수 있습니다.
이미지 취득 및 표준 카메라 기능 에뮬레이션 외에도, 카메라 에뮬레이션 장치는 실제 카메라가 제공하지 않는 기능도 제공합니다.
- 예를 들어 이미지 처리 알고리즘을 최적화하기 위해 사용자 지정 테스트 이미지를 표시할 수 있습니다.
- 예를 들어 예외 처리 루틴을 테스트하기 위해 failed buffers를 생성할 수 있습니다.
Camera Emulation 활성화#
pylon Viewer, pylon API 또는 둘 다에서 카메라 에뮬레이션을 활성화할 수 있습니다.
Camera Emulation Support 설치#
- Linux용 pylon을 사용하는 경우 카메라 에뮬레이션 지원이 기본적으로 설치됩니다.
- Windows용 pylon을 사용 중이고 런타임 재배포 패키지를 통해 pylon을 설치한 경우, 카메라 에뮬레이션 지원이 기본적으로 설치됩니다.
- Windows용 pylon을 사용 중이고 pylon Software Suite 설치 프로그램을 통해 pylon을 설치한 경우:
- 설치 중에 Camera User 또는 Developer 프로필을 선택한 경우, 카메라 에뮬레이션 지원이 기본적으로 설치됩니다.
- 설치 중에 Custom 프로필을 선택한 경우, Camera Emulation Support 옵션을 선택한 경우에만 카메라 에뮬레이션 지원이 설치됩니다. 그렇지 않은 경우 설치 프로그램을 다시 실행하여 해당 옵션을 선택하십시오.
pylon Viewer에서 Camera Emulation 활성화#
pylon Viewer에서 카메라 에뮬레이션을 활성화하려면:
- 카메라 에뮬레이션 지원이 설치되어 있는지 확인하십시오.
- pylon Viewer의 Tools 메뉴에서 Options를 클릭합니다.
- Options 대화 상자에서 Camera Emulation을 클릭합니다.
- Camera Emulation 페이지에서 원하는 수의 카메라 에뮬레이션 장치를 입력하고 OK를 클릭합니다.
잠시 후 Devices 창에 에뮬레이션 장치가 표시됩니다.
pylon Viewer를 사용하여 액세스할 수 있습니다. pylon API에서도 장치에 액세스하려면 아래 지침을 따르십시오.
정보
카메라 에뮬레이션 장치 수가 0으로 설정된 경우 Camera Emulation 노드가 Devices 창에 표시되지 않습니다.
pylon API에서 Camera Emulation 활성화#
pylon API에서 카메라 에뮬레이션을 활성화하려면:
- 카메라 에뮬레이션 지원이 설치되어 있는지 확인하십시오.
- 추가합니다: 시스템 환경 변수 이름 지정
PYLON_CAMEMU그리고 해당 값을 원하는 에뮬레이션 장치 수로 설정합니다.
예:PYLON_CAMEMU=2
이렇게 하면 두 개의 에뮬레이션 장치가 제공됩니다.
pylon API를 사용하여 액세스할 수 있습니다. pylon Viewer에서도 장치에 액세스하려면 다음을 따르세요. 위의 지침.
정보
경우 PYLON_CAMEMU 이 설정되지 않았거나 0으로 설정된 경우 에뮬레이션 장치를 사용할 수 없습니다.
Standard Camera Features#
카메라 에뮬레이션 장치는 다음과 같은 표준 카메라 기능을 에뮬레이트할 수 있습니다.
- Acquisition Frame Rate
- Acquisition Status
- Device Information Parameters
- Exposure Mode
- Exposure Time
- Gain
- Image ROI
- Pixel Format
- Resulting Acquisition Frame Rate
- Test Images
- Triggered Image Acquisition
Additional Features#
다음 기능은 카메라 에뮬레이션 장치에서만 사용할 수 있으며 물리적 Basler 카메라에서는 사용할 수 없습니다.
Custom Test Images 표시#
표준 Test Images 표시 외에도 카메라 에뮬레이션을 통해 디스크에서 로드한 사용자 정의 테스트 이미지를 표시할 수 있습니다.
정보
- Windows에서는 BMP, JPG, PNG 및 TIF 이미지 파일 형식을 로드할 수 있습니다.
- Linux에서는 PNG 및 TIF 이미지 파일 형식을 로드할 수 있습니다.
사용자 정의 테스트 이미지를 표시하려면:
- 다음 값 중 하나로
TestImageSelector매개변수:Off.
이렇게 하면 표준 테스트 이미지 사용이 비활성화됩니다. - 다음 값 중 하나로
ImageFileMode매개변수:On.
이렇게 하면 사용자 정의 테스트 이미지 사용이 활성화됩니다. - 표시하려는 경우 단일 테스트 이미지의 경우 전체 경로를 포함한 이미지 파일 이름을 다음 항목에 입력합니다.
ImageFilename파라미터.
예: c:\images\my-test-image.png -
여러 개의 테스트 이미지를 표시하려는 경우:
- 표시할 모든 테스트 이미지를 단일 디렉터리에 넣습니다.
디렉터리에는 하위 디렉터리가 포함되어서는 안 됩니다. - 파일이 포함된 디렉터리의 전체 경로를 다음 항목에 제공합니다.
ImageFilename파라미터.
예: c:\images\
- 표시할 모든 테스트 이미지를 단일 디렉터리에 넣습니다.
-
테스트 이미지를 표시하려면 하나 이상의 이미지를 취득합니다. pylon Viewer에서 이미지(들)를 표시하려면 도구 모음에서 단일 촬영 또는 연속 촬영 버튼을 클릭합니다.
문제 해결#
- 커스텀 테스트 이미지가 표시되지 않고 완전히 검은색 화면만 나타나는 경우, pylon이 파일을 로드하지 못한 것입니다. 다음 항목에 지정된 파일 이름이나 경로를 확인하세요.
ImageFilename디렉터리 이름을 지정한 경우, 해당 디렉터리에 하위 디렉터리가 포함되어 있지 않은지 확인하세요. - 커스텀 테스트 이미지가 흑백으로 표시되는 경우, 컬러 Pixel Format(BGR/BGRA/RGB)으로 전환하세요.
- 커스텀 테스트 이미지가 전체 크기로 표시되지 않는 경우, 다음 항목을 조정하세요. 이미지 ROI 파라미터(,
Width,Height,OffsetX및OffsetY).
이미지가 4096 x 4096보다 큰 경우: 파라미터를 설정하기 전에,Width및Height파라미터 값이 올바른 최대 이미지 크기에 맞게WidthMax및HeightMax조정되었는지 확인하세요.
Failed Buffers 생성#
Force Failed Buffer 기능을 사용하면 전송 실패 버퍼를 생성하여 불량 카메라 연결 상태를 시뮬레이션할 수 있습니다. 이는 예외 처리 루틴을 테스트하는 등의 작업에 유용할 수 있습니다.
전송 실패 버퍼를 생성하려면:
- 이미지 취득을 시작합니다.
- 다음 값 중 하나로
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를 사용하여 파라미터를 손쉽게 설정할 수 있습니다.