v3.6.1¶
v3.6.1은 대규모 릴리스입니다. imu 모듈(LSM6DS3), IMU 기반 자동 회전을 갖춘 일련의 새로운 sensor 게터 API, 4점 원근 rotation_corr() 을 도입하고, HIMAX HM01B0 및 OV7690 카메라와 함께 Arduino Portenta H7 을 지원하기 시작합니다. 여러 sensor / image API가 변경되었고 M7에서 TensorFlow가 제거되었습니다 — 아래의 호환성 깨짐 변경 사항을 확인하세요.
주요 사항¶
imu모듈 — LSM6DS3(OpenMV 4 / Portenta)의 가속도계 / 자이로 / 온도 / 롤 / 피치.센서 게터 + 자동 회전 —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), 그리고 IMU 기반 스냅샷 회전.원근 보정 —
rotation_corr()에fov및corners(4점) 키워드가 추가되었습니다.새로운 하드웨어 — Arduino Portenta H7, HIMAX HM01B0, OV7690 카메라.
호환성 깨짐:
set_pixformat()/set_framesize()가 이제None을 반환하고,sensor.set_framerate()가 제거되었으며, M7에서 TensorFlow가 제거되었고,lens_corr()/linpolar()가 이제 짝수 크기를 요구합니다 — 호환성 깨짐 변경 사항을 확인하세요.
새로운 기능¶
imu— 새로운 IMU 모듈:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(),imu.sleep()(OpenMV 4 / Portenta의 LSM6DS3).센서 게터 —
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(),set_auto_rotation()/get_auto_rotation()이 추가되었습니다.자동 회전 — 자동 회전이 활성화되면
sensor.snapshot()이 IMU를 사용하여 프레임을 뒤집기 / 미러링 / 전치합니다.rotation_corr()—fov및corners(4점 원근) 키워드와 원근 보정 예제가 추가되었습니다.lcd.init()—bgr키워드 인수가 추가되었습니다.collections.deque— MicroPython 빌드에서 활성화되었습니다.sensor.OV7690및sensor.HM01B0id 상수와 numpy 유사ulab이미지 필터 예제가 추가되었습니다.
기타 변경 사항 및 개선 사항¶
이미지 필터(median / mode / mean / …)와
find_circles()및 렌즈 보정을 크게 최적화했습니다.alloc_extra_fb가 이제 임의의 바이트 수를 할당할 수 있습니다. 사람 검출 모델이 새로운 average-pool 연산으로 재구축되었습니다.
버그 수정¶
카메라 및 센서:
OV2640
sleep()(이제 전원 차단 핀 대신 COM2 스탠바이 레지스터를 사용함), FSYNC 핀 구성, HM01B0 HSYNC/VSYNC 극성 및 I2C 주소/스캐닝, Portenta 센서 전원 차단 GPIO 및 카메라 리셋 핀을 수정했으며, IMU 피치가 90°/270° 부근일 때 자동 회전을 비활성화했습니다.
이미징 및 시스템:
이미지 필터 경계 검사 버그, D-cache 비활성화 시 발생하는 하드폴트, SD 카드가 없는 보드에서의 부팅,
tf.load()load_to_fb버그, 사람 검출 스택 오버플로(H7 스택을 ≥12 KB로 상향), OpenMV 4 Plus의 고속 모드 USB 디스크립터 오프셋을 수정했습니다.
하드웨어 및 보드 지원¶
Arduino Portenta H7 — 초기 보드 지원 시작(STM32H747 클럭/OSC/HSE 구성, CMSIS 헤더, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — 새로운 흑백 카메라 드라이버(Bayer, 외부 발진기 클럭).
OV7690 — 새로운 카메라 드라이버.
LSM6DS3 IMU — OpenMV 4 / Portenta.
호환성 깨짐 API 변경 사항¶
v3.6.0과 v3.6.1 사이의 사용자 가시적 API 변경 사항입니다. 범위: modules/ 의 Python C 모듈과 scripts/libraries/ 의 Python 라이브러리.
각 변경 사항은 영향도로 태그가 지정되어 있습니다:
minor — 좁은 범위의 API. 이를 사용한 스크립트에만 영향을 미칩니다.
behavior — 동일한 API이지만 결과가 다름. 조정된 스크립트를 다시 확인하세요.
변경 사항은 해당 순서로 영향도별로 그룹화되어 있습니다. 코드를 포팅하기만 하면 된다면 끝부분의 마이그레이션 체크리스트 로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
sensor.set_framerate() 제거됨 (minor)¶
no-op 스텁이었던 sensor.set_framerate() 가 제거되었습니다. 이제 이를 호출하면 AttributeError 가 발생합니다. 호출을 제거하고 대신 framesize/exposure를 통해 프레임 타이밍을 제어하세요. (작동하는 set_framerate() 는 v4.0.2에서 다시 도입됩니다.)
커밋: 705e98f91
OpenMV Cam M7에서 TensorFlow 제거됨 (minor)¶
TensorFlow(tf 모듈)가 OpenMV Cam M7 / OpenMV 3에서 비활성화되었습니다(더 이상 들어가지 않음). M7에서 import tf 는 실패합니다 — TensorFlow에는 H7급 카메라를 사용하세요. (tf 는 v3.6.3에서 F7에 다시 활성화됩니다.)
커밋: 2ae875077
set_pixformat() / set_framesize() 가 None 을 반환 (behavior)¶
sensor.set_pixformat() 와 sensor.set_framesize() 가 이제 True 대신 None 을 반환하며, 지원되지 않는 픽셀 형식은 이제 어서션 대신 ValueError 를 발생시킵니다. 반환값을 검사하던 코드(예: if sensor.set_pixformat(...):)는 그렇게 하지 않도록 해야 하며, 지원되지 않는 형식에 대해 AssertionError 를 잡던 코드는 ValueError 를 잡아야 합니다.
커밋: f314ac4e7
lens_corr() / linpolar() / logpolar() 가 짝수 크기를 요구 (behavior)¶
image.lens_corr() 와 image.linpolar() / image.logpolar() 가 이제 이미지 너비와 높이가 짝수일 것을 요구하며 홀수 크기에서는 오류를 발생시킵니다. 이러한 메서드를 호출하기 전에 이미지를 짝수 크기로 잘라내거나 크기를 조정하세요.
마이그레이션 체크리스트¶
v3.6.1로 깔끔하게 포팅하려면 일반적으로 다음 작업이 필요합니다:
sensor.set_framerate()호출을 제거하세요 (set_framerate 제거).TensorFlow 워크로드를 OpenMV Cam M7에서 다른 곳으로 옮기세요 (M7 TensorFlow 변경).
set_pixformat()/set_framesize()의 반환값에 의존하지 말고 지원되지 않는 픽셀 형식에 대해ValueError를 잡으세요 (반환값 변경).lens_corr()/linpolar()/logpolar()전에 이미지 크기가 짝수인지 확인하세요 (짝수 크기 요구 사항).
다른 모든 스크립트는 변경 없이 실행됩니다.