카메라 검색 및 선택#
애플리케이션에서 카메라를 사용하려면 먼저 사용 가능한 카메라를 검색해야 합니다. 이 과정을 열거(Enumeration)라고 합니다.
카메라 열거#
소비자용 카메라(예: 웹캠)와 달리 산업용 카메라는 단일 애플리케이션에 자동으로 연결되지 않습니다. 대신 다음 사항이 적용됩니다.
- 여러 카메라가 동시에 연결될 수 있습니다.
- 카메라는 USB, GigE 등 다양한 전송 계층(Transport Layer)을 통해 연결될 수 있습니다.
- 핫플러깅이나 네트워크 변경 등으로 인해 카메라가 동적으로 나타나거나 사라질 수 있습니다.
열거(Enumeration)를 통해 애플리케이션에서 다음 작업을 수행할 수 있습니다.
- 현재 사용 가능한 모든 카메라를 감지합니다.
- 카메라를 안정적으로 식별합니다.
- 작업에 적합한 카메라를 선택합니다.
예제#
전송 계층 팩토리(Transport Layer Factory)는 pylon 생태계로 진입하는 진입점입니다. 이 팩토리는 다음 작업을 담당합니다.
- 카메라 검색
- 디바이스 인스턴스 생성
- USB, GigE 등 기본 전송 계층 추상화
이를 디바이스 관리자로 생각하시면 됩니다.
그러면 디바이스 서술자 목록이 반환됩니다. 각 항목에는 다음과 같이 감지된 카메라에 대한 메타데이터가 포함됩니다.
- 모델 이름
- Serial number (고유 식별자)
- 인터페이스 유형(USB, GigE 등)
for device_info in device_info_list:
print(device_info.GetFriendlyName())
print(device_info.GetSerialNumber())
멘탈 모델#
System Startup
↓
Transport Layers Scan for Devices
↓
Detected Camera List (Enumeration)
↓
Application selects a camera
카메라 선택#
Serial number 또는 인덱스를 사용하여 카메라를 선택할 수 있습니다.
Serial Number (권장)#
카메라를 선택하는 데 권장되는 방법입니다.
serial_number = "123456"
for device_info in device_info_list:
if device_info.GetSerialNumber() == serial_number:
camera = pylon.InstantCamera(factory.CreateDevice(device_info))
Index#
정보
연결된 카메라 수에 따라 순서가 달라질 수 있으므로 인덱스 사용은 권장되지 않습니다.
사용 사례#
단일 카메라 시스템#
설정하려는 속성을 식별하려면 pylon.InstantCamera(pylon.FirstFound).
주요 특징:
- 간단한 구성을 테스트하기에 충분합니다.
- 단일 카메라 사용 사례에서는 필요한 Property를 딕셔너리로 전달하여 pylon이 카메라를 찾도록 할 수 있습니다.
- 다중 카메라 사용 사례에는 권장되지 않습니다.
멀티 카메라 시스템#
여러 번 장치를 검색하는 오버헤드를 방지하기 위해 먼저 장치를 열거(enumerate)한 후, 시리얼 번호와 같은 고유 식별자로 원하는 카메라를 선택하는 것을 Basler에서는 권장합니다.
- 모든 카메라를 열거합니다.
- 시리얼 번호 또는 사용자가 정의한 이름으로 카메라를 매핑합니다.
프로덕션 시스템#
- 구성 파일에 카메라 식별자를 저장합니다.
- 시작 시 존재 여부를 확인합니다.
- 필요한 카메라가 누락된 경우 즉시 실패 처리합니다.
주요 핵심 사항#
열거(Enumeration)는 애플리케이션을 다음과 같이 만들어 주기 때문에 필수적입니다.
- 하드웨어 변경에 유연하게 대응
- 연결 순서에 독립적임
- 다중 카메라로 확장 가능
적절한 열거 과정이 없으면 시스템이 취약해지고 유지보수가 어려워집니다.