v2.7.0¶
v2.7.0은 sensor 자동 게인 / 자동 노출 / 화이트 밸런스 API를 물리 단위(dB / 마이크로초)로 현대화하고, 위상 상관 find_displacement()를 전면 개편하며(회전/스케일 추가), get_similarity()(SSIM), chrominvar() / illuminvar(), 추가 프레임 버퍼, 그리고 MQTT 라이브러리를 추가합니다. 대규모 호환성 변경 릴리스입니다 — 아래의 호환성 변경 사항을 읽어보십시오.
주요 내용¶
현대화된 센서 API —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()이 이제 dB / 마이크로초를 사용하며, 이에 대응하는get_gain_db()/get_exposure_us()/get_rgb_gain_db()를 제공합니다.위상 상관 — 회전 / 스케일을 포함하도록 재작업된
find_displacement()와find_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()구조적 유사도.추가 프레임 버퍼 —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — 새로운 MQTT 라이브러리.
호환성 변경: 센서 게인/노출/화이트밸런스 API,
find_displacement()/ FFT 프레임 크기,find_number(), WINC 펌웨어 도구, 그리고 AprilTagz_rotation()이 모두 변경되었습니다 — 호환성 변경 사항을 참고하십시오.
새로운 기능¶
센서 —
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(),set_auto_gain()의gain_db_ceiling키워드, MT9V034hmirror/vflip지원, 그리고 추가 RAM 내 프레임 버퍼를 위한sensor.alloc_extra_fb()/sensor.dealloc_extra_fb()를 추가했습니다.이미지 —
remove_shadows(),min()/max()(프레임 차분), 구조적 유사도 예제와 함께get_similarity()(SSIM),chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(),mean()/mode()/median()/midpoint()적응형 필터의 threshold / offset / invert 키워드, 키포인트 객체의len()/ 인덱싱, 그리고 키포인트 매치 객체의.match()접근자를 추가했습니다.라이브러리 / 네트워크 — MQTT 라이브러리(WiFi MQTT 예제 포함)와 디버그 UART를 통해 WINC 펌웨어를 프로그래밍하기 위한
network.WINC.MODE_BSP모드를 추가했습니다.예제 — 저전력
deep_sleep.py/stop_mode.py, 고급 광학 흐름, 그리고 선형/로그 극좌표 예제 스크립트를 추가했습니다. 펌웨어는 이제 부팅 시uart.ini를 파싱하여 REPL UART를 활성화합니다.
기타 변경 사항 및 개선¶
get_regression()에area_threshold/pixels_threshold키워드와 더 빠른 강건 회귀(라인 추종 / 레이싱용)가 추가되었습니다.get_pixel()이 이제 Bayer 이미지를 지원합니다. STM32H7 기반 작업(CMSIS 헤더 / HAL / 부트로더 — H7 보드는 아직 사용할 수 없음)을 추가했고, 번들된 WINC1500 펌웨어를 업데이트했습니다(19.4.4 / 19.5.2).
버그 수정¶
이미징:
find_template()다이아몬드 탐색 범위 초과 버그,logpolar/linpolar손상, 그리고 0에 가까운 색상 값에서illuminvar()이 폭주하던 문제를 수정했습니다.
센서 및 시스템:
자동 게인 제어 버그,
snapshot()에서MAIN_FB크기 복원(다른 해상도에서의copy_to_fb, FB 크기 조정, 광학 흐름 풀링이 다시 작동하도록), WINCgethostbyname타임아웃, H7 부트로더의pydfuclear-status, 그리고 저전력 정지/대기 모드를 수정했습니다.
하드웨어 및 보드 지원¶
STM32H7 — 기반 작업(CMSIS / HAL / 부트로더); OpenMV H7 보드는 이번 릴리스에서 아직 사용할 수 없습니다.
WINC1500 — 번들된 펌웨어 업데이트.
호환성에 영향을 주는 API 변경¶
v2.6.0과 v2.7.0 사이의 사용자에게 보이는 API 변경. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.
각 변경 사항은 영향도로 태그가 지정됩니다:
major — 해당 기능을 사용한 대부분의 스크립트에 영향을 줍니다. 코드를 이식해야 합니다.
minor — 좁은 범위의 API. 이를 사용한 스크립트에만 영향을 줍니다.
behavior — 동일한 API, 다른 결과. 튜닝된 스크립트를 다시 확인하십시오.
변경 사항은 해당 순서대로 영향도별로 그룹화되어 있습니다. 코드만 이식하려면 끝부분의 마이그레이션 체크리스트로 건너뛰십시오. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
sensor.set_auto_gain()이 dB로 재작업됨 (major)¶
sensor.set_auto_gain() 은 더 이상 정수 value= 키워드를 받지 않으며 True / False 를 반환하지 않습니다. 대신 sensor.set_auto_gain(False, gain_db=...) (부동 소수점 dB 값)을 사용하고, 새로운 sensor.get_gain_db() 로 값을 다시 읽어오세요. 또한 실패 시 이제 ValueError 가 발생하므로 호출을 try / except 로 감싸야 합니다.
커밋: b906c5f19
sensor.set_auto_exposure()이 마이크로초로 재작업됨 (major)¶
sensor.set_auto_exposure()은 더 이상 정수 value= 키워드를 받지 않으며 True / False를 반환하지 않습니다. sensor.set_auto_exposure(False, exposure_us=...)을 사용하고, 새로운 sensor.get_exposure_us()로 값을 다시 읽으며, 실패 시 발생하는 ValueError를 처리하십시오.
커밋: 7be0a7a18
find_displacement() / FFT 프레임 크기 전면 개편 (major)¶
위상 상관이 전면 개편되었습니다. image.find_displacement()는 이제 변위 객체를 반환합니다(x_translation() / y_translation() — 이전의 x_offset / y_offset — 그리고 rotation() / scale()과 새로운 logpolar / fix_rotation_scale 키워드 포함). 별도의 rot-scale 객체는 제거되었고 find_rotscale()이 추가되었습니다. FFT 프레임 크기 상수는 이름이 변경되거나 제거되었습니다: sensor.B40x30은 완전히 제거되었고, sensor.B64x32 / B64x64는 대문자 sensor.B64X32 / B64X64로 이름이 변경되었습니다(새로운 B128X64 / B128X128 포함).
sensor.set_auto_whitebal()이 dB로 재작업됨 (minor)¶
sensor.set_auto_whitebal()은 정수 value=[r, g, b] 키워드를 rgb_gain_db=[r, g, b](부동소수점 dB)로 교체했으며, 이제 True / False 대신 None을 반환합니다(실패 시 ValueError 발생). 게인을 다시 읽으려면 새로운 sensor.get_rgb_gain_db()를 사용하십시오.
커밋: 30ecbdc4f
set_hmirror() / set_vflip()이 None을 반환함 (minor)¶
sensor.set_hmirror()와 sensor.set_vflip()은 이제 True / False 상태를 반환하는 대신 None을 반환하고 실패 시 ValueError를 발생시킵니다. 이들의 반환 값으로 분기하는 코드를 모두 제거하십시오.
커밋: aeb023804
WINC 펌웨어 도구가 파일 경로를 요구함 (minor)¶
network.WINC 펌웨어 도구가 변경되었습니다: wlan.fw_dump() / wlan.fw_update()는 이제 필수 펌웨어 파일 경로 인수를 받으며 WINC는 프로그래밍 모드(network.WINC(mode=...))로 열립니다. 인수 없는 호출을 경로를 전달하도록 업데이트하십시오(예: wlan.fw_update("/winc_19_5_2.bin")).
커밋: fcc3b0b9c
image.find_number()이 28x28 ROI를 요구함 (behavior)¶
image.find_number()(LeNet)는 이제 이미지 안에 들어맞는 정확히 28x28 ROI를 요구하며 그렇지 않으면 오류를 발생시킵니다(임의/전체 이미지 ROI에서 실행되는 대신). 명시적인 roi=(x, y, 28, 28)을 전달하십시오.
커밋: 4d09a13f3
AprilTag z_rotation() 부호 반전 (behavior)¶
AprilTag z_rotation()(및 관련 rotation())이 이제 오른손 좌표 규칙을 사용하므로, 반환되는 각도는 이전 릴리스 대비 부호가 반전됩니다. 기존 부호에 의존하는 스크립트는 값을 반전하거나 각도 계산을 조정해야 합니다.
커밋: 7673aaf74
마이그레이션 체크리스트¶
v2.7.0으로 깔끔하게 이식하기 위한 일반적인 작업은 다음과 같습니다:
set_auto_gain()을gain_db=+get_gain_db()로 이식하고ValueError를 처리하십시오(자동 게인 재작업).set_auto_exposure()을exposure_us=+get_exposure_us()로 이식하십시오(자동 노출 재작업).find_displacement()을 변위 객체로 업데이트하고 FFT 프레임 크기 상수의 이름을 변경하십시오(find_displacement 개편).set_auto_whitebal()을rgb_gain_db=+get_rgb_gain_db()로 이식하고(화이트 밸런스 재작업)set_hmirror()/set_vflip()의 반환 값 확인을 중단하십시오(미러/플립 변경).WINC
fw_*도구에 펌웨어 경로를 전달하십시오(WINC 도구 변경).find_number()에 28x28roi를 전달하고(find_number 변경) 반전된z_rotation()부호에 맞춰 AprilTag 각도 계산을 조정하십시오(z_rotation 변경).
다른 모든 스크립트는 변경 없이 실행됩니다.