v1.2.0

v1.2.0은 클래식 OpenMV 이미징 API의 대부분을 구축하는 기반이 되는 매우 큰 릴리스입니다. 그리기 메서드, 이진화 / 모폴로지 연산, 키포인트 디스크립터(FAST / FREAK / LBP), 색상 변환image.statistics, BMP / PPM / JPEG 파일 I/O, lcd, mjpeg, gif, mlx 열화상 모듈, OV7725 카메라, 그리고 다수의 sensor 제어 기능이 추가되었습니다. 일부 핵심 sensor 동작이 변경되었으므로 아래의 호환성 변경 사항을 읽어보세요.

주요 사항

  • 그리기 APIdraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • 이진화 / 모폴로지binary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • 키포인트match_descriptor() / save_descriptor() / load_descriptor()를 갖춘 FAST / FREAK / LBP 디스크립터.

  • 새 모듈lcd, mjpeg, gif(색상), mlx 열화상.

  • OV7725 카메라 지원, image.statistics, BMP/PPM/JPEG 파일 I/O.

  • 호환성 변경: sensor.reset(), sensor.snapshot(), sensor.set_pixformat()의 동작이 변경되었습니다 — 호환성 변경 사항을 참조하세요.

새로운 기능

  • 그리기 — 키워드 인자(color, thickness 등)를 갖춘 image.draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints()가 추가되었습니다.

  • 이진화 / 모폴로지image.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees(), width() / height() / format()가 추가되었습니다.

  • 키포인트 / 디스크립터find_keypoints()를 통한 FAST 키포인트 추출, FREAK / LBP를 위한 통합된 match_descriptor()save_descriptor() / load_descriptor(), 그리고 측면 얼굴 Haar/LBP 캐스케이드가 추가되었습니다.

  • 색상 / 통계image.statistics 및 색상 변환 함수(rgb_to_lab / lab_to_rgb / rgb_to_grayscale / grayscale_to_rgb).

  • 파일 I/O — BMP / PPM(P2/P3/P5/P6) / JPEG 로드 및 저장(그레이스케일 JPEG 및 4:2:0 / 4:2:2 크로마 서브샘플링 포함).

  • 모듈 — 새로운 lcd(LCD 실드), mjpeg(영상 녹화), 색상 gif(Gif.loop() 포함), mlx 열화상 카메라 모듈이 추가되었으며, 각각 예제 스크립트를 함께 제공합니다.

  • 센서sensor.get_id()(+ OV9650/OV2640/OV7725 PID 상수), sensor.set_special_effect()(SDE_* 상수), sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), HQVGA 프레임 크기, image.set_pixel(x, y, …)가 추가되었습니다.

  • WiFi — ATWINC1500 WiFi 드라이버와 OpenMV 1/2 BSP 기반 작업, 그리고 BLE 예제가 추가되었습니다.

기타 변경 사항 및 개선

  • 프레임 버퍼는 이제 OpenMV IDE로 스트리밍되기 전에 JPEG로 압축됩니다(대역폭 절감). JPEG 압축은 인플레이스로 수행됩니다. OV7725 가로/세로 줌으로 임의의 스케일링이 가능합니다. QVGA에서 실행되는 개선된(더 빠른) Haar 얼굴 검출이 추가되었습니다.

버그 수정

이미징:

  • 적분 이미지 계산, median() 필터 손상, 중심점 계산, RGB 입력에 대한 RGB 피부색 / 흑백 필터를 수정했으며, 그레이스케일 BMP/PPM 읽기/쓰기 속도를 개선했습니다.

센서 및 시스템:

  • pyb.Servo 타이머(이제 Servo가 작동함), HQVGA 해상도, SD 카드 초기화 안정성, 소프트 리셋 후 스토리지 재초기화, 스크립트가 없을 때 REPL 재실행을 수정했습니다.

하드웨어 및 보드 지원

  • OV7725 카메라 센서.

  • LCD 실드(lcd 모듈), mlx 열화상 카메라, ATWINC1500 WiFi 기반 작업.

호환성 깨짐 API 변경

v1.1.0과 v1.2.0 사이의 사용자에게 보이는 API 변경 사항. 범위: modules/의 Python C 모듈 및 scripts/libraries/의 Python 라이브러리.

세 가지 호환성 변경 사항은 모두 핵심 sensor 함수의 동작 변경입니다(동일한 API, 다른 동작) — 영향을 받는 스크립트를 다시 확인하세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다. (이 릴리스의 대부분은 v1.1→v1.2 범위 내에서 구축된 새로운 API이므로 호환성을 깨뜨리지 않는 추가 사항입니다.)

sensor.reset()가 더 이상 기본 설정을 적용하지 않음 (동작)

sensor.reset()는 더 이상 내장 기본 설정(pixformat / framesize / framerate / gain / contrast / brightness / saturation)을 적용하지 않습니다. reset()이 사용 가능한 기본값을 남겨 두는 데 의존하던 스크립트는 이제 reset() 이후 sensor.set_pixformat()sensor.set_framesize()(및 기타 설정)을 명시적으로 호출해야 합니다.

커밋: d1e782df3

sensor.snapshot()가 타임아웃 시 예외 발생 (동작)

sensor.snapshot()는 이제 센서가 타임아웃될 때 무한정 멈추는 대신 RuntimeError("Sensor Timeout!!")를 발생시킵니다. 타임아웃을 허용해야 한다면 snapshot()try / except RuntimeError로 감싸세요.

커밋: e3f41d674

sensor.set_pixformat()가 지원되지 않는 포맷에 대해 예외 발생 (동작)

sensor.set_pixformat()는 이제 지원되지 않는 픽셀 포맷이 주어지면 False를 반환하는 대신 예외를 발생시킵니다. False 반환값을 확인하던 코드는 대신 예외를 처리해야 합니다.

커밋: e0c5822c2

마이그레이션 체크리스트

v1.2.0으로 깔끔하게 포팅하려면 일반적으로 다음 작업이 필요합니다:

  1. sensor.reset() 이후에 sensor.set_pixformat() / sensor.set_framesize()를 명시적으로 설정하세요(reset 변경 사항).

  2. 센서 타임아웃을 허용해야 한다면 sensor.snapshot()try / except RuntimeError로 감싸세요(snapshot 변경 사항).

  3. False를 확인하는 대신 sensor.set_pixformat()의 예외를 처리하세요(set_pixformat 변경 사항).

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