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

문제 해결#

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

실용적인 디버깅 전략과 전형적인 오류 시나리오에 초점을 맞추고 있습니다.

전형적인 증상 및 원인#

증상 가능한 원인
카메라가 감지되지 않음 드라이버 누락, 케이블 문제, SDK 미설치
다음에서 타임아웃 발생: RetrieveResult() 트리거 잘못 설정, 신호 없음, 잘못된 타임아웃
프레임 드롭 대역폭 제한, 느린 처리 속도
그랩 오류 네트워크 불안정, 패킷 손실
애플리케이션 멈춤 현상 차단 호출, 교착 상태(데드락), 큐 오버플로

카메라 감지 문제#

카메라 감지 문제를 해결하려면 다음 두 가지 옵션을 사용할 수 있습니다:

  • 하드웨어 확인:

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

    • pylon SDK가 설치되어 있는지 확인하십시오.
    • 드라이버가 로드되었는지 확인합니다.
    • pylon Viewer로 테스트합니다.

타임아웃 문제#

일반적인 원인#
  • Trigger Mode이 활성화되었으나 트리거 신호가 없음
  • Exposure Time이 너무 김
  • 타임아웃 값이 너무 낮음
디버깅 전략#
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")

주요 내용 요약#

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