[Python][Python/FLIR] PySpin Node 사용법 #2

조회수 360

Spinnaker SDK, PySpin, Python, FLIR A Series, NodeMap, 노드(Node), SpinView, IsAvailable IsReadable IsWritable, TL Device NodeMap, TLStream NodeMap






*강좌 목차

[Python/FLIR] Spinnaker SDK, PySpin 설치 가이드

· FLIR Spinnaker SDK 설치 및 실행(Windows, Ubuntu)

[Python/FLIR] PySpin Node 사용법

· 노드의 개념, 타입, 사용법 설명, spinview에서 노드 정보 확인

[Python/FLIR] PySpin 카메라 스트리밍 기본

· Pyspin 사용하여 카메라 Connect 및 Grab 해보기

[Python/FLIR] PySpin카메라에서 온도값 가져오기(1)

· Nodemap으로 pixelformat 변경, IRFormat 변경하기

[Python/FLIR] PySpin 카메라에서 온도값 가져오기(2)

· TemperatureLinear(10K, 100K)으로 온도값 가져오기

[Python/FLIR] PySpin 카메라에서 온도값 가져오기(3)

· Radiometric 으로 온도값 가져오기

[Python/FLIR] PySpin 온도 데이터 팔레트 적용

· 온도값 팔레트 이미지 만들어보기

[Python/FLIR] PySpin 카메라 제어(1)

· QueryCase를 사용한 측정 온도 범위 변경 예제

[Python/FLIR] PySpin 카메라 제어(2)

· FPS변경 및 NUC Excute 예제


해당 강좌는 Python을 활용하여 Spinnaker SDK로 카메라를 제어하는 방법을 배우는 과정입니다.

강좌는 FLIR의 예제를 기반으로 하며, 사용되는 카메라는 FLIR A Series 모델입니다.

두 번째 강의에서는 Spinnaker SDK의 노드 개념과 간단한 PySpin 실습을 진행합니다.


1. 노드의 개념


Spinnaker SDK에서 **노드(Node)**는 카메라 연결, 이미지 캡처 및 스트리밍,

카메라 파라미터 설정, 에러 처리 등의 주요 기능을 수행합니다.

쉽게 말해, 코드를 통해 카메라를 제어하기 위해서는 노드를 사용해야 합니다.


노드는 여러 타입으로 구성되며, 기능별로 세분화됩니다.

Spinnaker SDK를 활용한 개발을 위해서는 필수적으로 이해해야 하는 개념입니다.


2. Node의 타입과 종류


2-1. 노드맵(NodeMap) 종류

노드맵은 크게 다음과 같이 분류됩니다.


- GetNodemap: 카메라의 전체 설정을 포함하는 노드맵

- TL Nodemap: 전송 계층을 담당하는 노드맵(카메라가 초기화(init)되기 전에 사용 가능)

- TLStream Nodemap: 카메라의 데이터 설정에 관여하는 노드맵


ex) StreamEnable, StreamBufferHandlingMode, StreamMaxPacketSize


2-2. GetNodemap에 포함된 주요 노드 종류

GetNodemap 내 주요 노드는 다음과 같습니다.


- Device Control: 디바이스 정보 포함 (ex: Vendor Name, Model Name, Device Serial Number)

- Image Format Control: 이미지 캡처 및 포맷 설정 (ex: Width, Height, Pixel Format)

- Acquisition Control: 이미지 획득 관련 설정 (ex: Acquisition Mode, Acquisition Frame Rate)

- Transport Layer Control: 이미지 데이터 전송 설정 (ex: Payload Size, GEVCurrent IP Address)

- Camera Control: 카메라 기능 제어 (ex: NUC Mode, Current Case, Query Case)

- Stream Control: 이미지 스트리밍 관련 설정 (ex: IR Pixel Format, IR Frame Rate)

- Object Parameters: 반사 온도, 방사율 등 (ex: Reflected Temperature, Object Emissivity)

- Measurement: 특정 측정 및 계산 파라미터 (ex: R, alpha1, beta1)


2-3. Node의 타입

노드의 타입은 다음과 같이 구성됩니다.


1. Float(실수형) : 소수점이 포함된 숫자 항목입니다.

2. Integer(정수형) : 소수점 없이 숫자만 사용하는 항목입니다.

3. String(문자열) : 문자열 항목입니다.

4. Enumeration(열거형) : 여러 선택지 중 지정된 값을 선택할 수 있는 타입입니다.(Listbox 선택) 

5. Command(명령형) : Spinview에서 버튼을 누르는 것과 같이 명령을 실행합니다.(EXCUTE)


Spinnaker Python으로 개발을 원활하게 진행하려면 각 노드(Node)의 종류와 타입을 정확히 이해하는 것이 중요합니다.

이를 위해 GetNodemap에 포함된 모든 노드 정보를 정리한 node_example.json 파일을 제공합니다.

이 JSON 파일은 **노드의 계층 구조(Tree Structure)**를 반영하여 Root 아래에 다양한 노드를 정리하였으며, 

각 노드는 Node Name(노드 이름)과 Node Type(노드 타입) 정보를 포함하고 있습니다.

SpinView에서 개별적으로 확인하는 것보다 한눈에 전체 노드 구조를 파악할 수 있도록 정리했으니, 개발 시 참고해 주세요.


3. Node 확인 방법 및 주의사항


3-1. Node 확인 방법

필요한 노드의 이름과 타입을 확인하는 가장 쉬운 방법은 SpinView를 활용하는 것입니다.

Spinnaker SDK, PySpin, Python, FLIR A Series, NodeMap, 노드(Node), SpinView, IsAvailable IsReadable IsWritable, TL Device NodeMap, TLStream NodeMap


Spinview에서 카메라를 선택하고 상위 이미지의 빨간 박스가 있는 Features를 누르게 되면 모든 Feature들을 확인할 수 있습니다.

정보를 확인하고 싶은 Parameter를 더블클릭을 하면, 하단 이미지와 같은 Node Information창이 나옵니다.


Spinnaker SDK, PySpin, Python, FLIR A Series, NodeMap, 노드(Node), SpinView, IsAvailable IsReadable IsWritable, TL Device NodeMap, TLStream NodeMap

해당 창에서 Name, Type, Value 등을 참고하여 추후 코드로 해당 노드에서 read, write 명령을 실행하게 됩니다.


3-2. Node 제어 시 주의사항

SpinView에서는 Spinnaker SDK가 자동으로 노드를 제어하지만,

PySpin을 사용하여 코드로 직접 제어할 경우 노드의 상태를 반드시 확인해야 합니다.


✓ 필수 확인 항목:

IsAvailable: 현재 노드를 사용할 수 있는지

IsReadable: 노드 값을 읽을 수 있는지

IsWritable: 노드 값을 변경할 수 있는지


일부 노드는 스트리밍 중일 때만 활성화되거나 특정 조건에서만 제어 가능하므로,

노드의 특성을 정확히 파악해야 합니다. 이를 통해 원하는 시점에 올바른 값으로 설정할 수 있습니다.


4. Spinnaker Python 노드 실습


이번 실습은 Jupyter Notebook 환경에서 진행되며, Spinnaker_Example(1).ipynb 파일을 활용합니다.

예제에서는 카메라 리스트 조회 → Connect → 노드맵 탐색 과정을 다룹니다.


✓ 실습 내용:

- 카메라 연결 및 노드맵 확인

- 노드맵을 타입별로 활용하는 방법


추가적인 노드 활용법은 추후 강의에서 상세히 다룰 예정입니다.

🔗 FLIR 공식 문서 참고 클릭하기!

📂 실습 파일 다운로드 클릭하기!


이번 강좌에서는 Spinnaker SDK의 노드 개념과 실습을 진행했습니다.

다음 강좌에서는 카메라 연결, 이미지 획득, 자원 해제를 다룰 예정이니 많은 기대 부탁드립니다.

감사합니다. 






e985976dc989c.png




Contact us.

블로그 바로가기
www.blog.naver.com/mdstec_flir

블로그 방문하기

MDS 교육 수강하기
상반기/ 하반기 진행시 오픈 예정

수강신청 바로가기


@MDS Tech Inc. All Rights Reserved.

Youtube↖︎

Instagram↖︎

Facebook↖︎

주소 : 13493 경기도 성남시 분당구 대왕판교로 644번길 49 DTC타워 9층TEL: 031-627-3000 FAX:031-627-3008

사업자등록번호 : 117-81-22859대표자 : 이창열, 이정승


©MDS Tech Inc. All Rights Reserved.

주소 : 13493 경기도 성남시 분당구 대왕판교로 644번길 49 DTC타워 9층

TEL: 031-627-3000 FAX:031-627-3008

사업자등록번호 : 117-81-22859대표자 : 이창열, 이정승

©MDS Tech Inc. All Rights Reserved.