v2.6.0

v2.6.0은 코어를 MicroPython 1.9.2로 업데이트하고, find_line_segments()LSD 알고리즘으로 전환하며, MT9V034 글로벌 셔터 센서 지원, image.rotation_corr() 원근 보정, sensor.sleep(), 원시 이미지 저장, 그리고 OpenMV 4 보드 기반 작업을 추가합니다. find_line_segments(), 여러 프레임 크기, 그리고 MicroPython 동작이 변경되었습니다 — 아래의 호환성 변경 사항을 읽어보십시오.

주요 내용

  • MicroPython 1.9.2 코어 업데이트.

  • LSD 선분find_line_segments()가 이제 선분 검출기(Line Segment Detector) 알고리즘을 사용합니다.

  • MT9V034 글로벌 셔터 센서 지원.

  • image.rotation_corr() — X/Y/Z 원근 회전 보정.

  • sensor.sleep() 소프트 슬립 모드 및 원시(비압축) 이미지 저장.

  • 호환성 변경: find_line_segments() 매개변수, 여러 프레임 크기 상수, 그리고 MicroPython 동작이 변경되었습니다 — 호환성 변경 사항을 참고하십시오.

새로운 기능

  • image.rotation_corr()rotation_correction.py 예제와 함께 X/Y/Z 원근 회전 보정을 추가했습니다.

  • sensor.sleep(enable) — 카메라를 소프트 슬립 모드로 전환합니다(슬립 모드 예제 포함).

  • 원시 이미지image.save()가 이제 원시(비압축) 이미지를 기록할 수 있습니다.

  • MT9V034 — 글로벌 셔터 센서 지원을 추가하여 sensor.MT9V034 상수를 노출합니다.

  • image.lens_corr()lens_correction.py 예제와 OpenMV 4 보드 지원 파일(보드 구성 / 부트로더 / 링커 기반 작업)을 추가했습니다.

기타 변경 사항 및 개선

  • 번들된 MicroPython을 1.9.2로 업데이트했고(1.9 포트 배관 작업, oofatfs); 새로운 LSD API에 맞춰 find_line_segments.py를 다시 작성했으며(렌즈 보정은 기본적으로 꺼짐); 호스트 측 openmv API를 업데이트했고(init(portname) / exec_script / stop_script); OpenMV Cam M4 센서 클럭을 낮췄으며(M4에서 최대 FPS 감소); IDE 정지 버튼이 이제 하드 강제 예외를 사용하여 스크립트를 더 안정적으로 중단합니다.

버그 수정

  • image.lens_corr()가 오래된 픽셀을 남기던 문제(이제 리매핑 전에 대상 버퍼를 비웁니다), blob.density()가 정수 나눗셈을 사용하던 문제(항상 0을 반환, #268), OpenMV 2 (M4) UART 핀 매핑을 수정했으며, qrcodes_with_lens_corr.py가 QVGA를 사용하도록 업데이트했습니다.

하드웨어 및 보드 지원

  • MT9V034 글로벌 셔터 센서.

  • OpenMV 4 — 보드 지원 파일(기반 작업).

  • OpenMV 2 (M4) — UART 핀 매핑 수정.

호환성에 영향을 주는 API 변경

v2.5.0과 v2.6.0 사이의 사용자에게 보이는 API 변경. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.

각 변경 사항은 영향도로 태그가 지정됩니다:

  • major — 해당 기능을 사용한 대부분의 스크립트에 영향을 줍니다. 코드를 이식해야 합니다.

  • minor — 좁은 범위의 API. 이를 사용한 스크립트에만 영향을 줍니다.

  • behavior — 동일한 API, 다른 결과. 튜닝된 스크립트를 다시 확인하십시오.

변경 사항은 해당 순서대로 영향도별로 그룹화되어 있습니다. 코드만 이식하려면 끝부분의 마이그레이션 체크리스트로 건너뛰십시오. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.

find_line_segments()가 LSD로 전환됨 (major)

image.find_line_segments()가 선분 검출기(LSD) 알고리즘을 사용하도록 다시 작성되었습니다. 기존의 threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride 매개변수가 merge_distancemax_theta_diff로 대체되었습니다(예: find_line_segments(merge_distance=0, max_theta_diff=15)). 또한 M4 클래스(OpenMV 2) 보드에서는 더 이상 사용할 수 없습니다.

커밋: 5a3153c8b, cbe2a4aeb

잘못된 프레임 크기 상수 제거 (minor)

잘못된 sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA 프레임 크기 상수가 제거되었습니다(#261). 이를 사용하는 스크립트는 지원되는 해상도로 전환해야 합니다.

커밋: 35ab0a26f

OpenMV Cam M4에서 find_qrcodes() 제거됨 (minor)

image.find_qrcodes()는 더 이상 M4 클래스(OpenMV 2) 보드에 컴파일되지 않습니다. M4 하드웨어에서 QR 검출을 하려면 OpenMV 3 (M7) 보드를 사용하거나 다른 코드 기능을 사용하십시오. 다른 보드는 영향을 받지 않습니다.

커밋: 7dff089e6

MicroPython이 1.9.2로 업데이트됨 (behavior)

번들된 MicroPython 코어가 1.9.2로 업데이트되었습니다. 표준 라이브러리 및 언어 동작은 업스트림 MicroPython 1.9.2를 따릅니다 — 버전별 동작에 의존하는 스크립트를 다시 확인하십시오. 특히, 1이 아닌 단계(step)를 가진 이미지 슬라이스는 이제 NotImplementedError 대신 OSError를 발생시킵니다.

커밋: 11bed4b99

마이그레이션 체크리스트

v2.6.0으로 깔끔하게 이식하기 위한 일반적인 작업은 다음과 같습니다:

  1. find_line_segments() 호출을 LSD 매개변수(merge_distance / max_theta_diff)에 맞게 다시 작성하고 해당 처리를 M4에서 옮기십시오(LSD 재작업).

  2. 제거된 프레임 크기 상수를 지원되는 해상도로 교체하십시오(프레임 크기 제거).

  3. M4 QR 코드 검출을 M7 보드로 옮기십시오(find_qrcodes 변경).

  4. 버전별 동작을 MicroPython 1.9.2에 대해 다시 검증하십시오(MicroPython 업그레이드).

다른 모든 스크립트는 변경 없이 실행됩니다.