v4.5.1

v4.5.1은 이미지 방향/종횡비 그리기 힌트, 파일 경로에서 이미지 직접 로드, GC2145 광시야각 ioctl, 새 백라이트 컨트롤러 API를 추가합니다. 또한 Image() 생성자, display API, 모듈 인수 파싱을 재작업했습니다 — 아래의 호환성을 깨는 변경 사항을 읽어보십시오.

주요 내용

  • 그리기 힌트draw_image()에 방향(HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270)과 종횡비 스케일링(SCALE_ASPECT_KEEP/EXPAND/IGNORE) 힌트가 추가되었습니다.

  • 디스크에서 이미지 로드draw_image() / display.write()가 파일 경로 문자열을 받습니다.

  • 백라이트 제어 — 새 DACBacklight / PWMBacklight 클래스와 디스플레이 backlight= 인수.

  • 호환성 변경: Image() 생성자, display API, 모듈 인수 파싱이 변경되었습니다 — 호환성을 깨는 변경 사항을 참고하십시오.

새 기능

  • draw_image() 방향 힌트 — image.HMIRROR, image.VFLIP, image.TRANSPOSE, 그리고 편의용 image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • draw_image() 종횡비 힌트 — 맞춤 / 확장 / 늘이기를 위한 image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE.

  • 팔레트 상수image.PALETTE_RAINBOWimage.PALETTE_IRONBOW (image 모듈로 이동됨).

  • 광시야각 — 새 sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE ioctl(GC2145에서 최대 5배 센서 스케일링).

  • 디스크에서 로드draw_image()display.write()가 소스 이미지 파일 경로 문자열을 받아 저장소에서 직접 로드합니다.

  • 백라이트 컨트롤러 — 새 DACBacklightPWMBacklight 클래스(display에서 임포트 가능), 그리고 SPI/병렬 디스플레이 생성자의 키워드 전용 backlight= 인수.

기타 변경 및 개선

  • ST7701 DSI 디스플레이 드라이버가 자체 st7701.py 모듈로 이동되어(여전히 from display import *로 임포트 가능) Arduino Giga에 프리징되었으며, lsm9ds1 IMU 드라이버가 Arduino Nano 33 BLE Sense에 프리징되었습니다.

  • MT9V022 / MT9V034(글로벌 셔터) 카메라가 이제 더 나은 이미지 품질을 위해 행 노이즈 보정을 적용합니다.

  • i.MX RT USB 대용량 저장소 볼륨이 이제 OpenMV 디스크로 레이블이 지정됩니다.

버그 수정

카메라 및 센서:

  • 480행보다 큰 이미지에서의 코너 검출(find_keypoints() FAST/AGAST)을 수정했습니다 — 이제 행별 버퍼가 이미지 높이에 맞게 크기가 지정됩니다.

  • i.MX RT(OpenMV RT1060)에서 프레임 동기화 snapshot()을 위한 FSYNC 핀 지원을 추가했고, RT1060에서 뒤바뀐 SPI4 MOSI/MISO 핀을 수정했습니다.

디스플레이 및 비디오:

  • SPIDisplay 생성자 인수 순서를 수정했습니다(bgr, byte_swap, triple_buffer가 잘못된 매개변수에 적용되고 있었습니다).

  • 지정된 사각형으로 이미지를 그릴 때의 TV 실드 이미지 손상과, 스케일된 프레임을 녹화할 때의 잘못된 MJPEG 프레임 경계를 수정했습니다.

네트워킹:

  • WINC WiFi AP 모드가 더 이상 구식 WEP 전용 제한을 강제하지 않습니다 — 적절한 PSK 처리와 함께 개방형 및 WPA AP 모드가 작동합니다.

하드웨어 및 보드 지원

  • OpenMV RT1060 — FSYNC 핀과 수정된 SPI4 핀.

  • Arduino GIGA — QSPI 신뢰성 우회책; ST7701 디스플레이 프리징.

  • Arduino Nano 33 BLE Senselsm9ds1 IMU 드라이버 프리징.

호환성을 깨는 API 변경

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

각 변경 사항에는 영향도가 표시되어 있습니다:

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

  • behavior — API는 동일하지만 결과가 다릅니다. 튜닝된 스크립트를 다시 확인하십시오.

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

Image() 생성자 및 display API (minor)

image.Image 생성자가 키워드 인수(height, pixformat, buffer=, copy_to_fb=)로 재작업되었습니다. 이제 기존 bytearray/버퍼에서 이미지를 만들 수 있으며, 압축 형식에는 버퍼가 필요합니다. display.write()도 재작업되었습니다: x_scale/y_scale는 이제 float(스케일 비율) 또는 int(픽셀 단위 목표 크기)를 받으며, 별도의 x_size/y_size 키워드는 제거되었습니다. WINC.connect()의 첫 번째 위치 인수가 essidssid로 이름이 변경되었고, WINC WiFi 스캔 결과가 (ssid_bytes, bssid_bytes, channel, rssi, security, N)로 변경되었습니다(SSID/BSSID는 이제 bytes이며, BSSID는 더 이상 포맷된 MAC 문자열이 아닙니다).

커밋: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

백라이트 범위, 스케일링, 키워드 전용 인수 (behavior)

Display.backlight()는 이제 0–255 대신 0–100 강도(0 = 꺼짐, 100 = 최대)를 받으며, 범위를 벗어나면 ValueError를 발생시킵니다. 정수 x_scale/y_scale 값은 이제 목표 픽셀 크기가 아니라 (float와 동일하게) 곱셈 스케일 인자로 처리됩니다 — 이는 fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display, tv 스케일링에 영향을 미칩니다. sensor, fir, tof, tv, mjpeg, gif, imageio, tf, audio 모듈 전반의 인수 파싱이 통합되어, 이전에는 위치 인수였던 여러 옵션이 키워드 전용이 되었습니다(이름, 기본값, 동작은 그 외에는 변경되지 않았습니다).

커밋: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

마이그레이션 체크리스트

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

  1. Image() 생성을 새 키워드 형식으로 업데이트하고, display.write()x_size/y_size에서 전환하며, WINC.connect()essidssid로 이름을 변경하십시오(새 bytes 기반 스캔 튜플을 처리하십시오)(생성자/display/WINC 변경).

  2. Display.backlight() 호출을 0–100으로 다시 스케일링하고, 정수 x_scale/y_scale 사용을 다시 확인하며, 이전에 위치 인수였던 모듈 옵션을 키워드로 전달하십시오(동작 변경).