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

문제 해결#

이 주제는 pypylon 및 산업용 카메라를 사용할 때 발생하는 일반적인 문제를 진단하고 해결하는 데 도움이 됩니다.

실용적인 디버깅 전략과 일반적인 오류 시나리오에 중점을 둡니다.

일반적인 증상과 원인#

증상 가능한 원인
카메라가 감지되지 않았습니다 드라이버 누락, 케이블 문제, SDK 미설치
시간 초과: RetrieveResult() 트리거 설정 오류, 신호 없음, 잘못된 타임아웃
프레임 드롭 대역폭 제한, 처리 속도 저하
그랩 오류 네트워크 불안정, 패킷 손실
앱이 멈춤 호 차단, 교착 상태, 큐 오버플로우

카메라 감지 문제#

카메라 감지 문제를 해결하려면 다음 두 가지 방법이 있습니다.

  • 하드웨어를 확인하십시오:

    • 케이블 연결 상태를 확인하십시오.
    • 카메라 전원 상태를 확인하십시오.
    • 다른 USB 포트나 이더넷 케이블을 사용해 보세요.
  • 소프트웨어를 확인하세요:

    • Pylon SDK가 설치되어 있는지 확인하십시오.
    • 드라이버가 제대로 로드되었는지 확인하십시오.
    • pylon Viewer 를 사용하여 테스트해 보세요.

타임아웃 문제#

일반적인 원인#
  • 트리거 모드가 활성화되었으나 트리거 신호가 없음
  • 노출 시간이 너무 길다
  • 타임아웃 값이 너무 낮습니다
디버깅 전략#
camera.TriggerMode
camera.TriggerSource

테스트를 위해 트리거 기능을 비활성화하려면:

camera.TriggerMode.Value = "Off"

그랩 오류#

지표#
if not grab_result.GrabSucceeded():
    print(grab_result.ErrorDescription)
일반적인 원인#
  • 네트워크 정체 (GigE)
  • 대역폭 부족
  • 연결 상태가 불안정합니다

영상 손상 및 프레임 손실#

일반적인 원인#
  • 패킷 손실 (GigE 카메라)
  • CPU 과부하
  • 버퍼 부족
완화 전략#
  • 점보 프레임 기능을 활성화하십시오.
  • 증가 MaxNumBuffer.
  • ROI 또는 프레임 속도를 낮추십시오.

성능 문제#

지표#
  • 지연 시간 증가
  • 대기열 크기 증가
  • 프레임 드롭
디버깅 전략#
  • 프레임 속도를 측정합니다.
  • CPU 사용량을 모니터링합니다.
  • 대기열 크기를 확인하십시오.

스레딩 문제#

지표#
  • 블로킹으로 인한 교착 상태 queue.get()
  • 종료 시 스레드가 중지되지 않음
수정 사항#
  • 타임아웃을 사용하세요:

    q.get(timeout=0.1)
    
  • 정지 신호를 준수하십시오:

    stop_event = threading.Event()
    

OpenCV GUI 문제#

지표#
QObject::killTimer error
일반적인 원인#
  • 워커 스레드에서 실행되는 GUI 함수
수정#
  • 실행 cv2.imshow() 메인 스레드에서만.

네트워크 문제 (GigE)#

지표#
  • 패킷 손실
  • 프레임 드롭
완화 전략#
  • 전용 네트워크 인터페이스 카드(NIC) 사용
  • 점보 프레임 기능을 활성화하십시오.
  • 패킷 지연 시간을 조정합니다.

디버깅 체크리스트#

첫 번째 단계는 어떤 레이어가 문제를 일으키는지 파악하는 것입니다.

Hardware → Transport → Driver → Application

다음과 같은 문제 징후를 확인하십시오:

  • 카메라가 감지되었나요?
  • pylon Viewer 는 효과가 있을까요?
  • 설정을 완료하셨나요? TriggerMode 올바르게?
  • 대역폭이 충분한가요?
  • CPU에 과부하가 걸려 있나요?
  • 대기열이 막히고 있나요?

로그 기록 권장 사항#

print 대신 구조화된 로깅을 사용하세요:

import logging
logging.exception("Camera error")

주요 핵심 사항#

  • 대부분의 문제는 설정이나 타이밍과 관련이 있습니다.
  • 하드웨어 문제와 소프트웨어 문제를 항상 구분해야 합니다.
  • 시스템 리소스를 지속적으로 모니터링하십시오.
  • 체계적인 디버깅 방식을 사용하십시오.