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

핵심 개념#

인수 라이프사이클#

Camera → Transport → Buffer Queue → Application
                         ↑
                   RetrieveResult()

멘탈 모델#

  • 카메라는 비동기 방식으로 작동합니다.
  • 파이썬은 동기식으로 데이터를 가져옵니다.
  • 버퍼는 두 도메인을 분리합니다.

차단 행동#

처리 속도가 느리면 작업이 밀리거나 프레임이 누락될 수 있습니다. 다음의 경우 적절한 타임아웃 값을 지정할 수 있습니다. RetrieveResult() 그랩 결과를 끝없이 기다리는 것을 피하기 위해.

RetrieveResult() → Waits until frame or timeout

GenICam 노드#

GenICam 노드란 무엇인가요?#

GenICam 노드는 카메라의 구성 가능한 단일 기능 또는 속성을 나타냅니다. 노드는 ‘ GenICam ’ 표준에 정의되어 있으며, 이 표준은 하드웨어 공급업체와 무관하게 카메라 기능에 접근할 수 있는 통일된 방법을 제공합니다.

각 노드는 강타입 매개변수처럼 동작하며 다양한 정보를 노출합니다:

  • 이름 (예: ExposureTime)
  • 데이터 유형 (예: 실수형, 정수형, 열거형 등)
  • 접근 권한 (읽기 전용 또는 읽기/쓰기)
  • 유효한 값 범위 또는 옵션

pypylon에서는 노드를 카메라 객체의 속성으로 접근할 수 있으며, 다음과 같은 메서드를 제공합니다:

exposure_time = camera.ExposureTime   # Read exposure time in microseconds.
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check Increment and ValueRange for valid values.

일반적인 노드 유형#

Parameter 예시 설명
플로트 ExposureTime 이산형 하드웨어 설정에 매핑되는 연속형 값
정수 Width 이산값
열거 TriggerMode 사전 정의된 문자열 값
부울 AcquisitionFrameRateEnable 참/거짓
명령 ExecuteSoftwareTrigger 작업을 실행합니다

pypylon의 모든 카메라 설정은 노드를 통해 이루어지기 때문에, 노드를 이해하는 것은 필수적입니다.

철탑 매개변수#

pylon 매개변수는 GenICam 노드를 감싸며, 값을 읽고 쓰는 데 필요한 확장되고 일관된 인터페이스를 제공합니다. 또한 유형 변환, 범위 검사 및 액세스 모드 처리를 담당합니다.

노드를 찾을 수 없는 경우, pylon.PlaceholderParameter 이 반환되므로, 코드가 누락된 노드를 원활하게 처리할 수 있습니다. 이는 서로 다른 카메라 모델이나 펌웨어 버전에 따라 사용 가능한 기능이 다를 수 있는 설정 상황에서 흔히 발생하는 시나리오입니다.

var = camera.NotThere.GetValueOrDefault(1)
camera.NotThere.TrySetValue(3000)

매개변수 설정

특정 매개변수를 변경하려면 먼저 데이터 수집을 중지해야 합니다:

camera.StopGrabbing()
camera.Width.Value = 640
camera.StartGrabbing()