v3.3.0¶
v3.3.0은 대규모 릴리스입니다. 새로운 sensor.ioctl() 인터페이스와 색상 팔레트를 통한 완전한 FLIR Lepton 열화상 카메라 지원, tv SPI 비디오 출력 모듈, 글로벌 셔터 트리거 모드, 다수의 새로운 image 그리기/분석 메서드(gamma_corr(), draw_ellipse(), draw_edges(), 여러 블롭 속성), 그리고 새로운 ToF / 모터 / linalg 라이브러리를 추가합니다. cpufreq API가 재작업되었고 sensor.set_framesize()는 이제 예외를 발생시킵니다. 아래의 호환성 깨짐 변경 사항을 읽어보세요.
주요 내용¶
FLIR Lepton — 새로운
sensor.ioctl()인터페이스, 색상 팔레트,image.to_rainbow()를 통한 완전한 열화상 카메라 지원.tv모듈 — SPI TV / 컴포지트 비디오 출력.글로벌 셔터 트리거 모드 —
sensor.ioctl()를 통한 MT9V034 트리거 캡처.이미징 —
gamma_corr(),draw_ellipse(),draw_edges(),draw_image()알파 블렌딩, 그리고 다수의 새로운 블롭 속성.새 라이브러리 — VL53L1X ToF 거리, TB6612 모터 드라이버, micro-linalg.
호환성 깨짐:
cpufreqAPI가 재작업되었고,sensor.set_framesize()는 이제 실패 시 예외를 발생시키며,sensor.alloc_extra_fb()는 Bayer/JPEG를 더 이상 지원하지 않고,image.replace()의 위치 인자 순서가 바뀌었습니다. 호환성 깨짐 변경 사항을 참고하세요.
새로운 기능¶
FLIR Lepton — 센서별 제어를 위한
sensor.ioctl()와 완전한 Lepton ioctl 세트(라디오메트리, 새로 고침/해상도, 명령 실행, 속성 설정/조회, °C 단위의 FPA/AUX 온도, 측정 모드/범위, 너비/높이),sensor.PALETTE_RAINBOW/PALETTE_IRONBOW와 함께하는sensor.set_color_palette()/sensor.get_color_palette(),image.to_rainbow(), 그리고 Lepton 예제 스크립트(27-Lepton)를 추가했습니다.트리거 모드 — MT9V034 글로벌 셔터 트리거 캡처를 위한
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODE를 고FPS 및 트리거 모드 예제와 함께 추가했습니다.tv모듈 — SPI TV / 컴포지트 비디오 출력 바인딩을 추가했습니다.이미징 —
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(),draw_image()알파 블렌딩,clear()의mask=키워드,mask_rectangle()/mask_circle()/mask_ellipse()재추가,draw_string()/draw_text()의 회전 / hmirror / vflip 키워드,replace()의transpose키워드(및assign/set별칭),copy()의x_scale/y_scale및crop()/scale(), 치수로부터 생성하는Image()생성자,sensor.BINARY픽셀 포맷, 노출된 색상 공간 변환 함수, 그리고 다수의 새로운 블롭 속성(corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, 회전)을 추가했습니다.라이브러리 —
vl53l1xToF 거리 센서 드라이버,tb6612모터 드라이버(DC 모터 및 스테퍼 Motor-Shield 예제 포함), 그리고 micro-linalg 라이브러리(ulinalg/umatrix)를 추가했습니다.FatFS를 FF13C(exFAT 지원)로 업그레이드했습니다.
기타 변경 및 개선 사항¶
기본 JPEG 품질을 개선했고(하드코딩된 값 대신 low–high의 중간값); 인플레이스 이미지 연산은 더 이상 첫 번째 인자로 이미지를 반복해서 전달할 필요가 없으며;
draw_string()은 정수가 아닌 스케일 값을 허용합니다.
버그 수정¶
카메라 및 센서:
Lepton 3.5 시작 시 멈춤(타임아웃 + 복구) 및 리셋 안정성,
set_pixformat()이전에 호출되던 MT9V034set_framesize()문제(호출 순서가 더 이상 중요하지 않음), STM32H7의 MT9V034 WVGA, MT9V034 자동 노출 범위 및 섀도 레지스터 업데이트, 그리고 H7 ADC 버그를 수정했습니다.
이미징:
find_apriltags()의 잘못된 메모리 접근, 스케일된 이미지를 메인 프레임 버퍼로 복사할 때의copy(),to_grayscale()/to_rgb565()프레임 버퍼 할당, 키포인트 객체의len(), JPEG MCU 경계 처리,binary()임계값 리스트 파싱, 그리고 키포인트 튜플을 허용하는draw_keypoints()를 수정했습니다.
시스템:
하드웨어 및 보드 지원¶
FLIR Lepton 열화상 카메라.
TV 실드 — SPI TV / 컴포지트 비디오 출력.
글로벌 셔터(MT9V034) 트리거 모드.
호환성 깨짐 API 변경¶
v3.2.0과 v3.3.0 사이의 사용자에게 보이는 API 호환성 깨짐. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.
각 변경 사항에는 영향도가 태그되어 있습니다:
major — 해당 기능을 사용한 대부분의 스크립트에 영향을 미칩니다. 코드를 포팅해야 합니다.
minor — 좁은 API. 이를 사용한 스크립트에만 영향을 미칩니다.
behavior — 동일한 API, 다른 결과. 튜닝된 스크립트를 다시 확인하세요.
변경 사항은 그 순서대로 영향도별로 묶여 있습니다. 코드 포팅만 원한다면 끝부분의 마이그레이션 체크리스트로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
cpufreq API 재작업 (major)¶
cpufreq 모듈이 H7 지원을 위해 재작업되었습니다. cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ 상수와 cpufreq.get_frequency()가 제거되었습니다. cpufreq.set_frequency()는 이제 일반 MHz 정수를 받으며(예: cpufreq.set_frequency(120)), cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies()가 추가되었습니다.
커밋: 6babf84a1
image.replace() 위치 인자 순서 변경 (minor)¶
image.replace()에 transpose 인자가 추가되면서 위치 인자 mask가 4번째 위치에서 5번째 위치로 이동했습니다. mask를 위치 인자로 전달한 코드(예: img.replace(src, hmirror, vflip, mask))는 키워드 형식 img.replace(src, mask=mask)로 전환해야 합니다.
커밋: dbe7bf059
sensor.alloc_extra_fb()가 더 이상 Bayer/JPEG를 허용하지 않음 (minor)¶
sensor.alloc_extra_fb()는 더 이상 sensor.BAYER 또는 sensor.JPEG를 허용하지 않습니다(이제 sensor.BINARY도 지원합니다). Bayer 또는 JPEG 형식으로 추가 프레임 버퍼를 할당한 코드는 GRAYSCALE / RGB565를 사용해야 합니다(또는 다른 방식으로 버퍼를 할당).
커밋: f9e6b3fe0
sensor.set_framesize()가 실패 시 예외 발생 (behavior)¶
sensor.set_framesize()는 이제 프레임 크기가 지원되지 않을 때 False를 반환하는 대신 ValueError를 발생시킵니다. False 반환값을 확인하던 코드는 대신 ValueError 예외를 잡아야 합니다.
커밋: b0442633e
마이그레이션 체크리스트¶
v3.3.0으로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:
cpufreq코드를 정수 MHz의set_frequency()및get_current_frequencies()/get_supported_frequencies()로 포팅하세요(cpufreq 재작업).mask를image.replace()에 키워드로 전달하세요(replace 변경).추가 프레임 버퍼를 Bayer/JPEG 대신
GRAYSCALE/RGB565로 할당하세요(alloc_extra_fb 변경).sensor.set_framesize()주위에서False를 확인하는 대신ValueError를 잡으세요(set_framesize 변경).
다른 모든 스크립트는 변경 없이 실행됩니다.