v1.1.0¶
v1.1.0은 기반 아키텍처 릴리스입니다: 초기의 커스텀 주변장치 모듈을 표준 MicroPython 내장 모듈로 대체하고, 이미징 API를 image 모듈로, 프레임 속도 클럭을 time으로 옮기며, 내장 Haar 캐스케이드, get_pixel() / set_pixel(), OpenMV 2 보드 지원, USB-CDC 디버깅을 추가합니다. 호환성을 크게 깨는 API 정의 릴리스이므로 — 아래의 호환성을 깨는 변경을 읽어보세요.
주요 사항¶
MicroPython 내장 모듈 — 커스텀
gpio/led/spi/socket/wlan/uart/file/select모듈이 MicroPython의pyb/machine으로 대체되며 제거되었습니다.image모듈 —Image()/HaarCascade()/ 디스크립터가 이제image모듈에 있습니다.time.clock— 프레임 속도 클럭이time모듈로 이동했습니다.내장 Haar 캐스케이드 —
HaarCascade("frontalface")/HaarCascade("eye")(파일 불필요).OpenMV 2 보드 지원 및 USB-CDC 디버깅.
호환성 깨짐: 모듈 구조가 재정의되었습니다 — 호환성을 깨는 변경을 참조하세요.
새로운 기능¶
Image —
Image.get_pixel(x, y)/set_pixel()및img[i]첨자 픽셀 접근을 추가했습니다; 내장 플래시 Haar 캐스케이드(HaarCascade("frontalface")/HaarCascade("eye"))와 캐스케이드 단계를 제한하는stages=키워드;draw_string()이 그레이스케일 이미지에서 동작합니다.Sensor —
sensor.set_colorbar(),sensor.set_saturation(), 그리고QQVGA2프레임 크기를 추가했습니다.mlx—mlx.RAINBOW/mlx.GRAYSCALE출력이 있는mlx.read(type).디버깅 — USB CDC를 통한 디버깅, 펌웨어
fw_version()쿼리, 보드별 펌웨어(OpenMV 1 / OpenMV 2), 자가 진단 / 컬러바 스크립트를 구현했습니다; 치명적/파싱 오류는 플래시에 기록됩니다.
기타 변경 및 개선 사항¶
메모리 부족 시 이제
OSError대신MemoryError가 발생합니다; 스크립트가 예외 재발생과 함께 실행되어 오류가 크래시 대신 출력됩니다; 직렬 보드 레이트를 구성할 수 있습니다(기본값 921600); 더 큰 플래시 파일 시스템; 캡처 안정성을 위해 센서 픽셀 클럭을 54 MHz로 낮췄습니다;sensor.reset()은 센서 소프트 리셋에만 의존합니다.
버그 수정¶
템플릿 매칭,
find_features()가 첫 번째 객체를 반복하는 문제, SCCB/I2C 원자적 레지스터 접근, SD 카드 칩 감지, 소프트 I2C 핀 매핑,fast_cbrtf/ LAB 색상 정확도, 그리고 OpenMV 1 / 2에서의 적분 이미지 / 미디언 필터 메모리 사용을 수정했습니다.
하드웨어 및 보드 지원¶
OpenMV 2 (STM32F427) 보드 지원 (및 OpenMV 3 하드웨어 설계); OpenMV 2에서는 MCO가 센서 클록으로 사용됩니다.
호환성을 깨는 API 변경¶
v1.0.3-beta와 v1.1.0 사이의 사용자에게 보이는 API 변경. 범위: modules/의 Python C 모듈 및 scripts/libraries/의 Python 라이브러리.
각 변경에는 영향도가 태그로 표시됩니다:
major — 해당 기능을 사용한 대부분의 스크립트에 영향을 줍니다; 코드를 포팅해야 합니다.
behavior — 동일한 API, 다른 결과; 튜닝된 스크립트를 다시 확인하세요.
변경 사항은 그 순서대로 영향도별로 묶여 있습니다. 코드만 포팅하려면 끝부분의 마이그레이션 체크리스트로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
커스텀 주변장치 모듈 제거 (major)¶
초기의 커스텀 clock / file / gpio / led / select / socket / spi / wlan / uart 모듈이 MicroPython의 내장 pyb / machine 주변장치로 대체되며 제거되었습니다. 스크립트를 표준 MicroPython 등가 항목으로 포팅하세요(예: pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).
커밋: 6d2fafa94
이미징 API가 image 모듈로 이동 (major)¶
Image(), HaarCascade(), 그리고 디스크립터 저장/불러오기 함수가 더 이상 단독 내장 항목이 아닙니다 — 새로운 image 모듈에 들어 있습니다. 스크립트는 import image를 하고 image.Image / image.HaarCascade()를 사용해야 합니다.
커밋: 54288c535
프레임 속도 클럭이 time으로 이동 (major)¶
독립형 clock 모듈이 제거되었습니다; 프레임 속도 클럭은 이제 time에 있습니다. import time과 clock = time.clock()을 사용하세요 — 반환된 객체는 여전히 .tick() / .fps() / .avg() / .reset()을 제공합니다.
커밋: a8928ca3b
/flash와 /sd가 더 이상 sys.path에 추가되지 않음 (behavior)¶
볼륨 레이블 / 루트 디렉터리가 수정되었고 /flash와 /sd는 더 이상 sys.path에 자동으로 추가되지 않습니다. 해당 위치에서 단순 이름으로 헬퍼 모듈을 임포트하던 스크립트는 경로를 명시적으로 추가해야 합니다(또는 모듈을 검색되는 위치에 두어야 합니다).
커밋: 09e77b5da
마이그레이션 체크리스트¶
v1.1.0으로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:
커스텀
gpio/led/spi/uart/socket/wlan/file/select모듈을 MicroPythonpyb/machine으로 교체하세요(커스텀 모듈 제거).import image를 하고Image()/HaarCascade()앞에image.을 붙이세요(image 모듈 이동).import time과clock = time.clock()을 사용하세요(clock 이동).단순 이름으로 헬퍼 모듈을 임포트했다면
/flash//sd를sys.path에 명시적으로 추가하세요(sys.path 변경).
그 외 모든 스크립트는 그대로 실행됩니다.