csi — 카메라 센서¶
csi 모듈은 OpenMV Cam의 카메라 센서를 다루는 최신 객체 지향 인터페이스입니다. 각 물리적 센서는 CSI 인스턴스로 표현되므로, 컬러 센서와 열화상 또는 이벤트 센서를 함께 탑재한 멀티스펙트럼 이미저 보드는 생성자에 서로 다른 cid 를 전달하여 각각을 독립적으로 구동할 수 있습니다. 단일 센서 캠은 CSI 하나만 인스턴스화하면 됩니다.
CSI 객체는 전체 센서 구성을 소유합니다 – 픽셀 형식, 프레임 크기 / 윈도우, 노출 / 게인 / 화이트 밸런스, 하드웨어 미러 및 플립, 컬러 바 테스트 패턴, 프레임 레이트 클럭, 자동 노출용 ROI, 그리고 칩별 ioctl 명령. 프레임은 CSI.snapshot() 으로 캡처되며, 이는 프레임 버퍼를 기반으로 하는 image.Image 를 반환합니다.
이 모듈은 레거시 sensor 모듈(단일 숨겨진 센서에 연결된 동일한 기능을 모듈 수준 함수로 노출하던 모듈)을 대체합니다. 새 코드는 CSI 를 사용해야 합니다.
사용 예시:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Asyncio 사용법¶
위의 블로킹 CSI.snapshot() 루프는 asyncio 이벤트 루프와 협력하지 않습니다 – snapshot 이 다음 프레임을 기다리는 동안 프로그램의 다른 모든 코루틴이 멈춥니다. 캡처 루프가 다른 동시 작업(UART 클라이언트, 버튼 감시기, 네트워크 작업)과 공존하도록 하려면 CSI 를 작은 어댑터로 감싸서, snapshot(blocking=False) 를 폴링하고 검사 사이에 이벤트 루프에 양보함으로써 snapshot 을 await 친화적인 코루틴으로 바꾸십시오:
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ 는 다른 모든 속성(reset, pixformat, framesize, 센서 조정 항목들)을 기반 CSI 로 전달하므로 래퍼는 그대로 대체할 수 있습니다. 첫 번째 논블로킹 호출은 카메라의 DMA 캡처가 아직 실행되고 있지 않으면 이를 시작하므로 추가적인 부트스트랩이 필요하지 않습니다.
그러면 캡처 루프는 또 하나의 코루틴으로서 더 큰 asyncio 프로그램에 들어맞습니다:
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
framebuffers 설정은 이 형태에서도 여전히 중요합니다 – 단일 버퍼 모드는 다음 프레임이 캡처될 때까지 snapshot(blocking=False) 가 None 을 반환하게 하는 반면, 더블 또는 트리플 버퍼링은 이를 부드럽게 처리하여 래퍼가 보통 첫 폴링에서 대기 중인 버퍼링된 프레임을 발견하도록 합니다. 전체 설명은 asyncio 튜토리얼의 AsyncCSI 캡스톤을 참조하십시오.
class CSI – 카메라 센서 인터페이스¶
CSI 클래스는 카메라 센서를 제어하는 데 사용됩니다.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
카메라 센서와 통신할 객체를 생성합니다. 센서가 여러 개인 보드에서는
csi.LEPTON과 같은cid를 전달하여 FLIR Lepton 센서 모듈을 선택하는 식으로 특정 CSI 객체를 선택할 수 있습니다.cid가 -1이면 기본 센서가 선택됩니다(멀티 센서 보드에서는 일반적으로 컬러 카메라 모듈).delays가False이면 csi 드라이버의 모든 안정화 시간 지연이 비활성화됩니다. 기본적으로 센서 드라이버는CSI.snapshot이 손상된 프레임을 반환하는 것을 막기 위해 리셋 / 모드 변경 후에 지연을 둡니다. 지연을 비활성화하면 업데이트를 일괄 처리하고CSI.snapshot을 호출하기 전에 마지막에 한 번만 지연을 적용할 수 있습니다.fflush가False이면CSI.framebuffers에서 언급된 자동 프레임버퍼 플러시가 비활성화됩니다. 이는 프레임 버퍼 fifo에 있는 프레임에 대한 시간 제한을 모두 제거합니다.stream은 이 CSI가 IDE로 전송되는 스트림 소스인지 여부를 선택합니다.None(기본값)이면 CSI가 기본(보조가 아닌) 센서인 경우에만 스트림 소스가 됩니다.True를 전달하면 이 CSI를 강제로 스트림 소스로 만들고, 거짓 값을 전달하면 기존 스트림 소스를 변경하지 않고 유지합니다.메서드¶
- reset(hard: bool = True) None¶
카메라 센서를 초기화합니다.
hard가True이면 카메라 모듈로 가는 RESET 신호 GPIO를 토글하여 하드웨어 리셋을 수행합니다. 기본 모듈과 동일한 RESET 신호 GPIO를 공유하는 보조 카메라 센서를 리셋할 때는hard를 false로 설정해야 합니다.
- flush() None¶
현재 프레임 버퍼 내용을 IDE 미리보기로 복사합니다. 스크립트가 종료될 때 IDE가 마지막 프레임을 표시하도록 마지막
CSI.snapshot이후에 이를 호출하십시오.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
카메라를 사용하여 사진을 찍고
image.Image객체를 반환합니다.time및/또는frames가 전달되면 snapshot은 그만큼의time밀리초 동안 및/또는 카메라에서 캡처된frames만큼 블로킹됩니다. 두 인수를 동시에 사용할 수 있습니다.time및/또는frames가 경과한 후 snapshot은None을 반환합니다.blocking을False로 설정하면 논블로킹 동작이 활성화되어, 카메라에서 다음 이미지가 준비되지 않았을 때 기다리는 대신 snapshot이None을 반환합니다.image는 새로운image.Image객체를 반환하는 대신 카메라에서 캡처한 새 이미지로 업데이트할 또 다른image.Image객체일 수 있습니다. 이전 이미지 내용은 깊은 복사를 통해 덮어쓰여집니다.CSI.auto_rotation이 활성화되어 있으면 이 메서드는 이미 회전된image.Image를 반환합니다.
- cid() int¶
카메라 모듈 칩 ID를 반환합니다.
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020,csi.SOFTCSI중 하나와 비교하십시오.
- readable() bool¶
CSI.snapshot으로 반환할 준비가 된 이미지가 있어서 snapshot 호출이 블로킹되지 않으면True를 반환합니다.
- pixformat(pixformat: int | None = None) int | None¶
카메라 모듈의 픽셀 포맷을
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422,csi.JPEG(OV2640/OV5640에서만) 중 하나로 설정합니다.인수 없이 호출하면 현재 pixformat을 반환합니다.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
카메라 모듈의 프레임 크기를 크기 상수(예:
csi.QVGA,csi.VGA,csi.HD등 — 상수 섹션 참조) 중 하나로 설정합니다.또는
(w, h)튜플로 사용자 지정 프레임 크기를 전달할 수 있습니다.CSI.snapshot이 호출되면 사용자 지정 프레임 크기가 DMA 규칙에 따라 평가됩니다. 일반적으로 프레임 크기는 8픽셀의 배수 및/또는 16바이트의 배수여야 합니다.인수 없이 호출하면 현재 프레임 크기를 반환합니다.
- framerate(rate: int | None = None) int | None¶
카메라 모듈의 프레임 레이트를 Hz 단위로 설정합니다.
인수 없이 호출하면 현재 프레임 레이트를 반환합니다.
참고
CSI.framerate는 카메라 모듈이 수신한 프레임을 드롭하여 프레임 레이트를 지정된 비율 이하로 유지하는 방식으로 작동합니다. 기본적으로 카메라는 최대 프레임 레이트로 실행됩니다. 특정 카메라 센서에 대해 구현된 경우CSI.framerate는 센서 노출을 늘려 전력을 절약하고 이미지 품질을 향상시키기 위해 카메라 센서 프레임 레이트를 내부적으로도 줄입니다. 일부 카메라에서는CSI.framerate가CSI.auto_exposure와 충돌할 수 있습니다.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
카메라의 해상도를 현재 해상도의 하위 영역으로 설정합니다.
roi는(x, y, w, h)튜플입니다.(w, h)를 전달할 수도 있으며 이 경우 윈도우가 중앙에 배치됩니다.인수 없이 호출하면 현재
(x, y, w, h)튜플을 반환합니다.
- gainceiling(gainceiling: int) bool¶
카메라 이미지 게인 천장값을 2, 4, 8, 16, 32, 64, 128 중 하나로 설정합니다.
성공 시
True를, 실패 시False를 반환합니다.
- quality(quality: int) bool¶
카메라 이미지 JPEG 압축 품질을 설정합니다. 0 - 100.
성공 시
True를, 실패 시False를 반환합니다.참고
OV2640/OV5640 카메라에서만 사용됩니다.
- colorbar(enable: bool) bool¶
컬러 바 모드를 켜거나(
True) 끕니다(False). 기본값은 꺼짐입니다.성공 시
True를, 실패 시False를 반환합니다.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enable은 자동 게인 제어를 켜거나(True) 끕니다(False). 카메라는 자동 게인 제어가 켜진 상태로 시작합니다.enable이False이면gain_db로 고정 게인을 데시벨 단위로 설정할 수 있습니다.enable이True이면 자동 게인 제어 알고리즘을 위해gain_db_ceiling으로 최대 게인 천장값을 데시벨 단위로 설정할 수 있습니다.참고
색상을 추적하려면 화이트 밸런스도 꺼야 합니다.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enable은 자동 노출 제어를 켜거나(True) 끕니다(False). 카메라는 자동 노출 제어가 켜진 상태로 시작합니다.enable이False이면exposure_us로 고정 노출 시간을 마이크로초 단위로 설정할 수 있습니다.참고
카메라 자동 노출 알고리즘은 노출 값을 얼마나 조정할지에 대해 상당히 보수적이며 일반적으로 노출 값을 크게 변경하는 것을 피합니다. 대신 변화하는 조명에 대처하기 위해 게인 값을 많이 변경합니다.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enable은 자동 화이트 밸런스를 켜거나(True) 끕니다(False). 카메라는 자동 화이트 밸런스가 켜진 상태로 시작합니다.enable이False이면rgb_gain_db로 빨강, 초록, 파랑 채널에 대한 고정 게인을 각각 데시벨 단위로 설정할 수 있습니다.참고
색상을 추적하려면 게인 제어도 꺼야 합니다.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
카메라의 자동 블랙 레벨 보정(BLC)을 설정합니다.
enable은 BLC를 켜거나 끄도록True또는False를 전달합니다. 일반적으로 항상 켜 두는 것이 좋습니다.regs는 비활성화된 경우 이전CSI.blc_regs호출에서 얻은 BLC 레지스터 값을 수동으로 설정할 수 있습니다.
- blc_regs() List[int]¶
센서 BLC 레지스터를 정수 리스트로 반환합니다.
CSI.auto_blc와 함께 사용합니다.
- hmirror(enable: bool | None = None) bool | None¶
수평 미러 모드를 켜거나(
True) 끕니다(False). 기본값은 꺼짐입니다.인수 없이 호출하면 현재 설정을 반환합니다.
- vflip(enable: bool | None = None) bool | None¶
수직 플립 모드를 켜거나(
True) 끕니다(False). 기본값은 꺼짐입니다.인수 없이 호출하면 현재 설정을 반환합니다.
- transpose(enable: bool | None = None) bool | None¶
전치 모드를 켜거나(
True) 끕니다(False). 기본값은 꺼짐입니다.vflip=False, hmirror=False, transpose=False -> 0도 회전
vflip=True, hmirror=False, transpose=True -> 90도 회전
vflip=True, hmirror=True, transpose=False -> 180도 회전
vflip=False, hmirror=True, transpose=True -> 270도 회전
인수 없이 호출하면 현재 설정을 반환합니다.
- auto_rotation(enable: bool | None = None) bool | None¶
자동 회전 모드를 켜거나(
True) 끕니다(False). 기본값은 꺼짐입니다.인수 없이 호출하면 현재 설정을 반환합니다.
참고
이 메서드는 OpenMV Cam에
imu가 설치되어 있을 때만 작동하며 자동으로 활성화됩니다.
- framebuffers(count: int | None = None) int | None¶
이미지 데이터를 수신하는 데 사용되는 프레임 버퍼의 수를 설정합니다. 기본적으로 OpenMV Cam은 할당할 수 있는 최대 수의 프레임 버퍼를 할당하려고 시도합니다.
CSI.pixformat,CSI.framesize,CSI.window가 호출될 때마다 재할당이 발생합니다.count가 1(단일 버퍼), 2(더블 버퍼), 3(트리플 버퍼)이면 해당 캡처 모드를 선택합니다. 4 이상을 전달하면 드라이버를 비디오 FIFO 모드로 전환하여count개의 버퍼가 큐에 들어갑니다 — SD 카드로의 비디오 녹화에 유용합니다. 프레임 드롭 시 활성 버퍼를 제외한 모든 프레임 버퍼가 비워지므로CSI.snapshot은 항상 최근 프레임을 반환합니다.인수 없이 호출하면 현재 카운트를 반환합니다.
- special_effect(effect: int) bool¶
특수 디지털 효과(
csi.NORMAL또는csi.NEGATIVE중 하나)를 설정합니다.성공 시
True를, 실패 시False를 반환합니다.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enable은 활성화하려면True, 비활성화하려면False.radi는 보정할 픽셀의 정수 반경.coef는 보정의 강도.성공 시
True를, 실패 시False를 반환합니다.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
카메라 모듈이 새 프레임을 생성할 때마다(단, 프레임이 수신되기 전에) 실행될 콜백
cb를 (인터럽트 컨텍스트에서) 등록합니다.cb는 하나의 인수를 받으며 변경 후 vsync 핀의 현재 상태가 전달됩니다.인수 없이 호출하면 등록된 콜백을 반환합니다. 콜백을 지우려면 호출 불가능한 값을 전달하십시오.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
카메라 모듈이 새 프레임을 생성하고 그 프레임을
CSI.snapshot으로 읽을 준비가 될 때마다 실행될 콜백cb를 (인터럽트 컨텍스트에서) 등록합니다.cb는 인수를 받지 않습니다. 이를 사용하여micropython.schedule()로 나중에 프레임을 읽도록 예약하십시오.인수 없이 호출하면 등록된 콜백을 반환합니다. 콜백을 지우려면 호출 불가능한 값을 전달하십시오.
- ioctl(request: int, *args) Any¶
센서별 요청을 실행합니다.
request는IOCTL_*상수 중 하나이며, 나머지 위치 인수와 반환 값은 요청에 따라 다릅니다. 지원되는 요청은 아래에서 센서 계열별로 묶여 있습니다.일반(모든 센서):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))센서 판독 윈도우를 설정합니다. 윈도우가 작을수록 시야각을 희생하는 대신 프레임 레이트가 높아집니다.
ioctl(IOCTL_GET_READOUT_WINDOW)현재 판독 윈도우를
(x, y, w, h)튜플로 반환합니다.ioctl(IOCTL_SET_TRIGGERED_MODE, enable)MT9V034에서 트리거 모드를 활성화(
True)하거나 비활성화(False)합니다.ioctl(IOCTL_GET_TRIGGERED_MODE)현재 트리거 모드 상태를
bool로 반환합니다.ioctl(IOCTL_SET_FOV_WIDE, enable)True이면framesize()가 프레임 레이트보다 시야각을 최적화하도록 지시합니다.ioctl(IOCTL_GET_FOV_WIDE)현재 FOV-wide 상태를
bool로 반환합니다.ioctl(IOCTL_SET_NIGHT_MODE, enable)센서의 저조도 “야간 모드”를 활성화(
True)하거나 비활성화(False)합니다. OV7725와 OV5640에서만 지원됩니다.ioctl(IOCTL_GET_NIGHT_MODE)현재 야간 모드 상태를
bool로 반환합니다.ioctl(IOCTL_GET_RGB_STATS)센서에서 읽은 원시 RGB 채널 통계
(r, gb, gr, b)의 4-튜플을 반환합니다(일반적으로 화이트 밸런스 튜닝에 사용됨).
OV5640 FPC – 자동 초점:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)OV5640 FPC 모듈에서 자동 초점 스윕을 시작합니다.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)진행 중인 자동 초점 스윕을 일시 중지합니다.
ioctl(IOCTL_RESET_AUTO_FOCUS)자동 초점 위치를 기본값으로 리셋합니다.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)현재 자동 초점 스윕이 끝날 때까지 블로킹합니다.
timeout_ms는 생략 시 기본값 5000입니다.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Lepton 이미지 너비를 픽셀 단위로 반환합니다.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Lepton 이미지 높이를 픽셀 단위로 반환합니다.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Lepton의 유형(방사 측정 여부)을 int로 반환합니다.
ioctl(IOCTL_LEPTON_GET_REFRESH)Lepton의 리프레시 레이트를 Hz 단위로 반환합니다.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Lepton의 ADC 해상도를 비트 단위로 반환합니다.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)FLIR Lepton SDK 명령을 실행합니다.
cmd는 SDK에서 정의한 16비트 명령 id입니다.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Lepton SDK 속성을 씁니다.
attr_id는 16비트 속성 id이며,payload는 길이가 16비트의 배수여야 하는bytes/bytearray입니다.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Lepton SDK 속성을 읽습니다.
attr_id는 16비트 속성 id이며,words는 읽을 16비트 워드의 수입니다.bytearray를 반환합니다.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Lepton 초점면 어레이 온도를 섭씨 단위로 반환합니다.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Lepton 보조 온도를 섭씨 단위로 반환합니다.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Lepton을 AGC와 직접 온도 출력 사이에서 전환합니다.
measurement_enabled=True는 직접 온도 출력을 활성화합니다. 선택적high_temp_enabled플래그는 고온 범위를 선택합니다.ioctl(IOCTL_LEPTON_GET_MODE)2-튜플
(measurement_enabled, high_temp_enabled)를 반환합니다.ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))측정 모드가 활성화되었을 때
0..255에 매핑되는 온도 범위를 설정합니다.ioctl(IOCTL_LEPTON_GET_RANGE)현재
(min_celsius, max_celsius)범위를 반환합니다.
Himax HM01B0 – 모션 검출:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)HM01B0의 온센서 모션 검출 블록을 활성화(
True)하거나 비활성화(False)합니다.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))HM01B0의 모션 검출 윈도우를 설정합니다.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)모션 검출 임계값(
0–255)을 설정합니다.ioctl(IOCTL_HIMAX_MD_CLEAR)모션 검출 인터럽트 래치를 지웁니다.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)HM01B0의 내부 오실레이터를 활성화(
True)하거나 비활성화(False)합니다.
Prophesee GENX320 – 이벤트 센서:
ioctl(IOCTL_GENX320_SET_BIASES, preset)바이어스 프리셋을 적용합니다.
preset은GENX320_BIASES_*상수 중 하나입니다.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)단일 바이어스를 설정합니다.
bias는GENX320_BIAS_*상수 중 하나이며,value는 정수 설정값입니다.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)안티 플리커 필터를 구성합니다.
enable은 bool이며, 선택적 주파수 인수는 필터 통과 대역을 설정합니다.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])시공간 대비 필터를 구성합니다.
mode는GENX320_STC_*상수 중 하나이며, 최대 두 개의 추가 인수는 모드에 따라 다릅니다.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)센서를 프레임 모드와 이벤트 모드 사이에서 전환합니다.
mode는GENX320_MODE_*상수 중 하나입니다. 이벤트 모드의 경우evt_res는IOCTL_GENX320_READ_EVENTS에 전달되는 이벤트 버퍼의 행 축 길이입니다.ioctl(IOCTL_GENX320_READ_EVENTS, buf)이벤트를
buf로 읽어들입니다. 이는 형태가(EVT_res, 6)인uint16ndarray이며 여기서EVT_res는 1024와 65536 사이의 2의 거듭제곱입니다. 열은 다음과 같습니다:[0]– 이벤트 유형(PIX_OFF_EVENT/PIX_ON_EVENT/ 트리거).[1]– 초.[2]– 밀리초.[3]– 마이크로초.[4]–x좌표.[5]–y좌표.
기록된 이벤트의 수를 반환합니다.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)GENX320의 원시 이벤트 프레임을 담은
image.Image를 반환합니다.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)노이즈가 정규 분포에서
sigma표준 편차를 초과하는 픽셀을 끕니다.iterations는 보정 패스의 정수 횟수입니다. 비활성화된 픽셀의 수를 반환합니다.
- color_palette(palette: int | None = None) int | None¶
FLIR Lepton 그레이스케일에서 RGB565로의 변환이나 GENX320 이벤트 시각화 같은 작업에 사용할 색상 팔레트를 설정합니다.
image.PALETTE_RAINBOW,image.PALETTE_IRONBOW, 그리고 (지원되는 경우)image.PALETTE_DEPTH,image.PALETTE_EVT_DARK,image.PALETTE_EVT_LIGHT중 하나입니다.인수 없이 호출하면 현재 설정을 반환합니다.
함수¶
상수¶
- csi.BINARY: int¶
BINARY(비트맵) 픽셀 형식. 각 픽셀은 1비트입니다. 마스크 저장에 유용하며,
image.Image()와 함께 사용할 수 있습니다.
- csi.YUV422: int¶
YUV422 픽셀 형식. 각 픽셀은 그레이스케일 8비트 Y 값과 두 Y 값 사이에 공유되는 교대하는 8비트 U/V 색상 값(Y1, U, Y2, V, …)으로 저장됩니다. 일부 이미지 처리 메서드만 YUV422와 함께 작동합니다.
- csi.JPEG: int¶
JPEG 모드. 카메라 모듈이 압축된 JPEG 이미지를 출력합니다. JPEG 품질을 제어하려면
CSI.quality를 사용하십시오. OV2640/OV5640 카메라에서만 작동합니다.
- csi.NORMAL: int¶
CSI.special_effect의 일반 모드.
- csi.NEGATIVE: int¶
CSI.special_effect의 네거티브 모드.
- csi.IOCTL_SET_FOV_WIDE: int¶
CSI.framesize가 FPS보다 시야각을 최적화하도록 활성화합니다.CSI.ioctl을 참조하십시오.
- csi.IOCTL_GET_FOV_WIDE: int¶
CSI.framesize가 FPS보다 시야각을 최적화하고 있는지 여부를 반환합니다.CSI.ioctl을 참조하십시오.
- csi.IOCTL_GENX320_SET_BIASES: int¶
GENX320 센서 바이어스를
GENX320_BIASES_*프리셋 중 하나로 설정합니다.CSI.ioctl을 참조하십시오.CSI.reset이후 드라이버는csi.GENX320_BIASES_DEFAULT가 아닌csi.GENX320_BIASES_LOW_NOISE를 적용합니다 — 애플리케이션에 더 높은 감도나 대역폭이 필요할 때 이 ioctl을 사용하여 다른 프리셋으로 전환하십시오.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
저조도 조건에 맞게 튜닝됨 — 더 높은 감도를 위해 두 대비 임계값이 모두 완화되고, FO가 낮아지며, 느린 밝기 변화도 여전히 감지되도록 HPF가 비활성화됩니다.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
고대비로 깜박이는 LED(능동 마커)를 추적하도록 튜닝됨 — 급격한 전환만 트리거하도록 대비 임계값이 높아지고, 대역폭을 최대화하고 느린 주변광 드리프트를 거부하도록 FO와 HPF가 높게 설정되며, 모든 깜박임 에지가 캡처되도록 REFR=0입니다.
- csi.GENX320_BIASES_LOW_NOISE: int¶
드라이버 기본값 —
DEFAULT보다 낮은 감도(높아진 대비 임계값)와 배경 노이즈 활동을 줄이기 위한 낮은 FO. 거짓 이벤트가 지배할 정적이거나 느린 장면에 가장 적합합니다.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
빠른 움직임 장면에 맞게 튜닝됨 — 더 넓은 픽셀 대역폭을 위한 높은 FO, 느린 변화를 거부하기 위한 높은 HPF, 그리고 판독이 포화되지 않도록 각 이벤트 후 더 긴 데드 타임을 위한 높은 REFR.
- csi.IOCTL_GENX320_SET_BIAS: int¶
단일 GENX320 센서 바이어스를 DAC 값으로 설정합니다.
GENX320_BIAS_*상수(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPF,csi.GENX320_BIAS_REFR)와 정수 DAC 값을 전달하십시오. 각 바이어스는 독립적입니다 — 프리셋을 적용한 후 필요한 바이어스만 조정하도록 이 ioctl을 반복적으로 호출하십시오.CSI.ioctl을 참조하십시오.
- csi.GENX320_BIAS_DIFF_OFF: int¶
네거티브 비교기 대비 임계값 —
csi.PIX_OFF_EVENT가 발생하기 전에 픽셀이 얼마나 어두워져야 하는지를 제어합니다. 값이 낮을수록 = 더 민감(이벤트가 더 많음).
- csi.GENX320_BIAS_DIFF_ON: int¶
포지티브 비교기 대비 임계값 —
csi.PIX_ON_EVENT가 발생하기 전에 픽셀이 얼마나 밝아져야 하는지를 제어합니다. 값이 낮을수록 = 더 민감(이벤트가 더 많음).
- csi.GENX320_BIAS_FO: int¶
픽셀 저역 통과 차단 주파수 — 픽셀 대역폭(속도/지연 시간)을 배경 노이즈 활동과 절충합니다. 값이 높을수록 = 더 빠른 픽셀 응답, 더 많은 노이즈.
- csi.GENX320_BIAS_REFR: int¶
픽셀 불응 기간 — 픽셀이 이벤트를 방출한 후 다시 발생할 수 없는 데드 타임. 값이 높을수록 = 더 긴 데드 타임, 바쁜 픽셀에서 더 적은 이벤트.
- csi.IOCTL_GENX320_SET_AFK: int¶
GENX320 안티 플리커(AFK) 필터를 설정합니다. 이 필터는 주기적인 주파수 대역(형광등, LED 구동 디스플레이 등)에서 토글하는 픽셀의 이벤트를 거부합니다.
enable(활성화는 1, 비활성화는 0)을 전달하고, 활성화 시 대역 경계를 헤르츠 단위로 전달하십시오:(enable, freq_low_hz, freq_high_hz).CSI.ioctl을 참조하십시오.
- csi.IOCTL_GENX320_SET_STC: int¶
GENX320 시공간 대비(STC) 필터 모드를 설정합니다.
GENX320_STC_*상수(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL)와 그 모드가 요구하는 임계값(밀리초 단위)을 전달하십시오.CSI.ioctl을 참조하십시오.
- csi.GENX320_STC_ONLY: int¶
버스트의 두 번째 이벤트를 유지하고, 첫 번째 이벤트와 이후의 모든 이벤트를 드롭합니다. 하나의 매개변수
stc_threshold를 밀리초 단위로 받습니다 — 동일한 픽셀에서 이전 이벤트로부터 해당 윈도우 내에 있는 이벤트는 동일한 버스트의 일부로 간주됩니다.
- csi.GENX320_STC_TRAIL_ONLY: int¶
버스트의 첫 번째 이벤트를 유지하고,
trail_threshold가 경과할 때까지 동일한 픽셀에서 후속 이벤트를 드롭합니다. 하나의 매개변수trail_threshold를 밀리초 단위로 받습니다.
- csi.GENX320_STC_TRAIL: int¶
버스트의 첫 번째 이벤트와 이후의 엣지를 유지합니다 —
csi.GENX320_STC_ONLY와csi.GENX320_STC_TRAIL_ONLY를 결합합니다.stc_threshold와trail_threshold두 개의 매개변수(둘 다 ms 단위)를 받으며, 센서는 두 값이 대략 13:1 비율 이내로 유지될 것을 요구합니다.
- csi.IOCTL_GENX320_SET_MODE: int¶
GENX320 동작 모드를 설정합니다. 온칩 이벤트 히스토그램을 위해서는
csi.GENX320_MODE_HISTO를 전달하고(이 경우 카메라는 설정된 프레임레이트로 일반 그레이스케일 카메라처럼 동작합니다), 원시 이벤트 스트리밍을 위해서는csi.GENX320_MODE_EVENT뒤에 이벤트ndarray의 행 축 길이(1024와 65536 사이의 2의 거듭제곱)를 전달합니다.CSI.ioctl을 참조하세요.
- csi.GENX320_MODE_HISTO: int¶
히스토그램 모드 — 이벤트가 픽셀별 빈으로 온칩에서 누적되어 구성된 레이트(~20-350 FPS)에서 320x320 그레이스케일 프레임으로 보고됩니다. 캠이 일반 카메라처럼 보이므로 모든 표준 이미지 처리 루틴이 직접 작동합니다.
- csi.GENX320_MODE_EVENT: int¶
이벤트 모드 — 온칩 히스토그램을 우회하고 원시 이벤트를 마이크로초 타임스탬프와 함께 numpy
ndarray로 스트리밍합니다. 미리 비닝된 프레임이 아닌 전체 시간 세부 정보가 필요한 애플리케이션을 위한 것입니다.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
원시 이벤트를 형태가
(EVT_res, 6)인 uint16ndarray로 읽어들입니다(여기서EVT_res는csi.IOCTL_GENX320_SET_MODE에 전달된 버퍼 크기와 일치합니다). 열은[0]이벤트 유형(csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]초 타임스탬프,[2]밀리초,[3]마이크로초,[4]X 좌표(0-319),[5]Y 좌표(0-319)입니다. 버퍼에 기록된 이벤트의 수를 반환하며, 그 수를 넘는 이전 행은 그대로 둡니다.CSI.ioctl을 참조하십시오.
- csi.IOCTL_GENX320_CALIBRATE: int¶
핫 픽셀 — 정적 장면에서도 잘못 발생하는 픽셀 — 을 자동으로 비활성화합니다. 드라이버는 320x320 픽셀별 적중 횟수를 작성하고, 평균과 표준 편차를 계산한 다음, 횟수가
mean + sigma * stddev를 초과하는 모든 픽셀을 비활성화합니다. 이벤트 횟수 예산(통계를 계산하기 전에 집계할 이벤트 수 — 높을수록 = 더 신뢰할 수 있는 추정, 더 느림; ~10000이 좋은 기본값)과 시그마 부동소수점(낮을수록 = 더 공격적, ~0.5 기본값)을 전달하십시오. 비활성화된 픽셀의 수를 반환합니다. 움직임으로 인한 이벤트가 실제로는 정상인 픽셀에 불리하게 집계되지 않도록 먼저 정적 장면을 향해 캠을 조준하십시오.CSI.ioctl을 참조하십시오.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
GENX320에서 원시 이벤트 프레임
image.Image를 반환하며, 이벤트는 여전히 칩의 네이티브 패킹된 인코딩 상태입니다 — 캠에서 처리하는 대신 PC로 원시 스트림을 전달하여 오프라인 디코딩하려는 경우에 유용합니다.CSI.ioctl을 참조하십시오.
- csi.PIX_OFF_EVENT: int¶
GENX320 이벤트 유형(열
[0]) — 픽셀이 밝기 감소를 감지함(네거티브 대비 임계값이 교차됨). 열[4]/[5]는 픽셀의 X/Y를 담습니다.
- csi.PIX_ON_EVENT: int¶
GENX320 이벤트 유형(열
[0]) — 픽셀이 밝기 증가를 감지함(포지티브 대비 임계값이 교차됨). 열[4]/[5]는 픽셀의 X/Y를 담습니다.
- csi.RST_TRIGGER_RISING: int¶
GENX320 이벤트 유형(열
[0]) — 픽셀 리셋 트리거, 상승 에지. X/Y는 사용되지 않습니다. 현재 펌웨어에서 생성되지 않습니다.
- csi.RST_TRIGGER_FALLING: int¶
GENX320 이벤트 유형(열
[0]) — 픽셀 리셋 트리거, 하강 에지. X/Y는 사용되지 않습니다. 현재 펌웨어에서 생성되지 않습니다.