콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

핵심 개념#

Acquisition 수명 주기#

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

Mental Model#

  • 카메라가 비동기식으로 실행됩니다.
  • Python이 동기식으로 가져옵니다.
  • 버퍼가 두 영역을 분리합니다.

블로킹 동작#

처리가 느려지면 적체 현상과 프레임 드롭이 발생할 수 있습니다. 다음과 같이 적절한 타임아웃 값을 지정할 수 있습니다. RetrieveResult() 이를 통해 Grab Result를 무기한 대기하는 것을 방지할 수 있습니다.

RetrieveResult() → Waits until frame or timeout

GenICam Nodes#

GenICam Node란 무엇인가요?#

GenICam node는 카메라의 단일 설정 가능 기능 또는 Property를 나타냅니다. Node는 GenICam 표준에 정의되어 있으며, 하드웨어 공급업체에 관계없이 카메라 기능에 액세스할 수 있는 통일된 방식을 제공합니다.

각 Node는 강력한 형식(Strongly-typed)의 매개변수처럼 동작하며 다양한 정보를 제공합니다.

  • Name (예: ExposureTime)
  • Data type (예: Float, Integer, Enumeration 등)
  • Access rights (읽기 전용 또는 읽기/쓰기)
  • 유효한 값 범위 또는 옵션

pypylon에서 Node는 카메라 객체의 속성으로 액세스되며 다음과 같은 메서드를 제공합니다.

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

일반적인 Node 유형#

Parameter 예시 설명
Float ExposureTime 개별 하드웨어 설정에 매핑되는 연속 값
Integer Width 이산 값
Enumeration TriggerMode 미정의된 문자열 값
Boolean AcquisitionFrameRateEnable True/False
명령 ExecuteSoftwareTrigger 액션을 실행합니다.

pypylon의 모든 카메라 설정은 노드를 통해 수행되므로 노드를 이해하는 것이 필수적입니다.

pylon Parameters#

pylon parameters는 GenICam 노드를 감싸고 값 읽기 및 쓰기를 위한 확장된 일관된 인터페이스를 제공합니다. 또한 형식 변환, 범위 확인 및 액세스 모드 처리를 관리합니다.

노드를 찾을 수 없는 경우 pylon.PlaceholderParameter 이(가) 반환되므로 코드가 누락된 노드를 안정적으로 처리할 수 있습니다. 이는 서로 다른 카메라 모델이나 펌웨어 버전에 따라 사용 가능한 기능이 다를 수 있는 설정 환경에서 자주 발생합니다.

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

파라미터 설정

특정 파라미터를 변경하려면 먼저 이미지 취득을 중지해야 합니다.

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