v3.7.0¶
v3.7.0은 큰 릴리스입니다. 새로운 논블로킹 콜백 API를 갖춘 audio 모듈(Portenta H7 PDM 마이크), micro_speech TensorFlow 음성 인식 모듈, 완전히 새로운 병렬 RGB LCD 컨트롤러(HDMI 출력 및 FT5X06 터치 포함), 픽셀 형식 상수를 갖춘 image.flush() 메서드, 그리고 새로 작성된 image.draw_image() 스케일링 파이프라인을 추가합니다. 여러 레거시 헬퍼 라이브러리와 이미지 메서드가 제거되었고 yuv_to_* 연산이 변경되었습니다 — 아래의 호환성을 깨는 변경 사항을 읽어 보세요.
주요 변경 사항¶
audio모듈 — 논블로킹start_streaming(callback)API를 통한 Portenta H7 온보드 PDM 마이크 캡처.micro_speech— TensorFlow 마이크로 음성 인식 모듈.새로운 LCD 컨트롤러 — 병렬 RGB 디스플레이 지원, HDMI 출력(TFP410), FT5X06 터치.
image.draw_image()— 전체 스케일링/알파/팔레트 파이프라인(x_scale/y_scale/hint/color_palette…)으로 새로 작성되었습니다.image.flush()및 픽셀 형식 상수(image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).호환성을 깨는 변경: 레거시 수학 헬퍼 라이브러리와 여러 이미지 메서드가 제거되었고,
draw_image()/ LCD API가 재작업되었으며,yuv_to_*가 더 이상 128을 빼지 않습니다 — 호환성을 깨는 변경 사항을 참고하세요.
새로운 기능¶
audio— PDM 마이크 캡처를 위한 새로운 Portenta H7audio모듈:audio.init(), 논블로킹audio.start_streaming(callback), 그리고audio.stop_streaming()(주파수는 Hz 단위로 지정).micro_speech— TensorFlow 음성 인식을 위한MicroSpeech클래스,audio_callback(),micro_speech()를 갖춘 새로운 모듈입니다.listen()은 이동 윈도우 평균을 사용하며, 결과를 레이블 목록으로 제한하기 위한filter키워드를 받습니다.LCD — 병렬 RGB 디스플레이 지원,
LCD_NONE/LCD_SHIELD/LCD_DISPLAY타입, 다수의 framesize 상수,triple_buffer/framesize/refresh/bgr/deinit, 확장된display, TFP410을 통한 HDMI 출력, FT5X06 터치스크린 지원을 갖춘 새로운 LCD 컨트롤러.image.flush()—image.flush()메서드와 픽셀 형식 상수(image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG)를 추가했습니다.image.draw_image()— 새로운 스케일링 파이프라인으로 새로 작성되었습니다:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_palette,hint, 그리고image.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRST상수, 새로운 알파 블렌딩 / 색상 테이블 / 스케일링 예제.ImageReader.next_frame()에 실시간 재생 지연을 비활성화하는pause키워드가 추가되었습니다.Portenta 오디오 예제(
audio_fft.py,micro_speech.py)와 ExtInt 정지 모드 깨우기 예제를 추가했습니다.
기타 변경 사항 및 개선¶
기본 제공 예제가
scripts/examples/Arduino/아래로 재구성되었으며, 이제copy_to_fb=True로 이미지를 불러오거나 생성한 후 프레임버퍼가 즉시 갱신됩니다(수동 flush 불필요). Portenta 힙은 더 많은 정적 드라이버 상태를 수용하기 위해 약간 줄어들었습니다.
버그 수정¶
카메라 및 이미징:
캡처된 이미지에서 빨강/파랑이 뒤바뀐 문제(RGB565 바이트 순서), 다른 그리기 코드와 일치시키기 위한 DMA2D 그리기 반올림, 재귀 할당(
find_blobs())에서의fb_alloc손상을 수정하고,top_hat()/black_hat()을 이진 연산과 수학 연산이 모두 활성화된 경우로 제한했습니다.
디스플레이 및 오디오:
LCD 실드 출력과 Portenta 1채널 모노 오디오 모드를 수정했습니다.
Portenta:
이더넷/SDRAM 문제를 우회(
rst_eth를 high로 구동)하고 SDRAM 타이밍 설정을 수정했습니다.
하드웨어 및 보드 지원¶
Arduino Portenta H7 — 온보드 PDM 마이크(SAI / PDM2PCM) 오디오 캡처.
LCD — 새로운 병렬 RGB 디스플레이 컨트롤러(H7 빌드에서 LTDC 활성화), TFP410을 통한 HDMI 출력, FT5X06 터치스크린 LCD 지원.
호환성을 깨는 API 변경¶
v3.6.9과 v3.7.0 사이의 사용자 표시 API 변경. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.
각 변경에는 그 영향이 태그로 표시되어 있습니다:
minor — 좁은 API; 이를 사용한 스크립트에만 영향을 줍니다.
behavior — 동일한 API, 다른 결과; 튜닝된 스크립트를 다시 점검하세요.
변경 사항은 그 순서대로 영향별로 그룹화되어 있습니다. 코드를 포팅하기만 하려면 끝에 있는 마이그레이션 체크리스트로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
레거시 수학 헬퍼 라이브러리 제거 (minor)¶
mtx, rv, ulinalg, umatrix, vec 헬퍼 라이브러리가 ulab을 위해 scripts/libraries에서 제거되었습니다. 이들 중 하나라도 import하는 스크립트는 실패하므로 ulab으로 포팅해야 합니다.
커밋: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() 제거 (minor)¶
image.remove_shadows(), image.chrominvar(), image.illuminvar()가 대체 없이 삭제되었습니다. 이 메서드들을 호출하는 스크립트는 해당 호출을 제거해야 합니다.
커밋: 3173c2bb3
image.draw_image() 시그니처 재작업 (minor)¶
image.draw_image()가 새로운 스케일링 파이프라인 위에 새로 작성되었습니다. 기존의 위치 인수 alpha / 단일 scale 인수와 이전의 위치 순서는 더 이상 적용되지 않습니다. 새로운 키워드 형식(x_scale= / y_scale= 또는 x_size= / y_size=, alpha=, color_palette=, hint= …)을 사용하세요.
커밋: 3439f8824
LCD 모듈 재작성 (minor)¶
lcd 모듈이 새로운 디스플레이 컨트롤러를 위해 새로 작성되었습니다. 이제 lcd.init()은 디스플레이 type(LCD_NONE / LCD_SHIELD / LCD_DISPLAY)과 새로운 키워드 인수를 받으며, 상수 / API 표면이 상당히 재구성되었습니다. 기존의 실드 전용 스크립트는 대부분 여전히 동작하지만 기본값과 동작이 변경되었으므로 — 새로운 type / framesize API에 맞춰 LCD 스크립트를 검토하세요.
커밋: 185538207
yuv_to_*가 더 이상 128을 빼지 않음 (behavior)¶
이제 image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab()이 128을 빼는 대신 Y 튜플 요소를 부호 없는 0–255 값으로 취급합니다. 이전과 동일한 색상을 얻으려면 호출자는 기존의 −128 바이어스 없이 Y를 전달해야 합니다.
커밋: dcf141192
마이그레이션 체크리스트¶
v3.7.0으로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:
mtx/rv/ulinalg/umatrix/vec사용을ulab으로 포팅하세요(수학 라이브러리 제거).image.remove_shadows()/chrominvar()/illuminvar()호출을 제거하세요(제거된 이미지 메서드).image.draw_image()호출을 새로운 키워드 시그니처로 업데이트하세요(draw_image 재작업).새로운
lcdtype/framesizeAPI에 맞춰 LCD 스크립트를 검토하세요(LCD 재작성).Y를
yuv_to_*에 전달할 때 −128 바이어스를 제거하세요(yuv_to_* 변경).
그 밖의 모든 스크립트는 그대로 실행됩니다.