v1.2.0¶
v1.2.0 — це базовий, дуже великий реліз, який формує більшу частину класичного API OpenMV для роботи із зображеннями: методи малювання, операції бінаризації / морфології, ключові дескриптори (FAST / FREAK / LBP), перетворення кольору та image.statistics, файловий ввід/вивід BMP / PPM / JPEG, модулі lcd, mjpeg, gif та теплова камера mlx, камера OV7725 та численні елементи керування sensor. Деяка базова поведінка sensor змінилася — ознайомтеся з критичними змінами нижче.
Основні можливості¶
API малювання —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().Бінаризація / морфологія —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Ключові точки — дескриптори FAST / FREAK / LBP з
match_descriptor()/save_descriptor()/load_descriptor().Нові модулі —
lcd,mjpeg,gif(кольоровий) та теплова камераmlx.Підтримка камери OV7725;
image.statistics; файловий ввід/вивід BMP/PPM/JPEG.Критична зміна: поведінка
sensor.reset(),sensor.snapshot()таsensor.set_pixformat()змінилася — перегляньте критичні зміни.
Нові можливості¶
Drawing — додано
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()з ключовими аргументами (color, thickness, …).Бінаризація / морфологія — додано
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees(), а такожwidth()/height()/format().Ключові точки / дескриптори — виявлення ключових точок FAST через
find_keypoints(), єдинийmatch_descriptor()таsave_descriptor()/load_descriptor()для FREAK / LBP, плюс профільний каскад Хаара/LBP для обличчя.Колір / статистика —
image.statisticsта функції перетворення кольору (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Файловий ввід/вивід — завантаження та збереження BMP / PPM (P2/P3/P5/P6) / JPEG (включно з JPEG у відтінках сірого та субдискретизацією кольоровості 4:2:0 / 4:2:2).
Модулі — нові модулі
lcd(LCD-щит),mjpeg(запис відео), кольоровийgif(зGif.loop()), таmlx(тепловізійна камера), кожен з прикладами скриптів.Sensor — додано
sensor.get_id()(+ константи PID для OV9650/OV2640/OV7725),sensor.set_special_effect()(константи SDE_*),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), розмір кадруHQVGAтаimage.set_pixel(x, y, …).WiFi — додано драйвер WiFi ATWINC1500, основу BSP для OpenMV 1/2, а також приклад BLE.
Інші зміни та вдосконалення¶
Кадровий буфер тепер стискається у JPEG перед потоковою передачею до OpenMV IDE (менша пропускна здатність); стиснення JPEG виконується на місці; H/V зум OV7725 забезпечує довільне масштабування; покращене (швидше) виявлення облич Хаара, яке працює при QVGA.
Виправлення помилок¶
Робота із зображеннями:
Виправлено обчислення інтегрального зображення, пошкодження фільтром
median(), обчислення центроїда, фільтри шкіри RGB / чорно-білий на RGB-вхідних даних, а також прискорено читання/запис BMP/PPM у відтінках сірого.
Датчик та система:
Виправлено таймери
pyb.Servo(Servo тепер працює), роздільну здатність HQVGA, надійність ініціалізації SD-картки, повторну ініціалізацію пам’яті після м’якого скидання та повторне виконання REPL, коли скрипт відсутній.
Апаратне забезпечення та підтримка плат¶
Датчик камери OV7725.
LCD-щит (модуль
lcd), теплова камераmlxта основа WiFi ATWINC1500.
Критичні зміни API¶
Критичні зміни API, видимі користувачу, між v1.1.0 та v1.2.0. Область дії: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.
Всі три критичні зміни — це зміни behavior базових функцій sensor (той самий API, інша поведінка) — перевірте відповідні скрипти. Кожен хеш коміту посилається на його diff на GitHub. (Переважна більшість цього релізу — новий API, доданий у діапазоні v1.1→v1.2, і тому є додатковим, а не критичним.)
sensor.reset() більше не застосовує конфігурацію за замовчуванням (behavior)¶
sensor.reset() більше не застосовує вбудовану конфігурацію за замовчуванням (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Скрипти, які покладалися на те, що reset() залишає придатну конфігурацію, тепер мають явно викликати sensor.set_pixformat() та sensor.set_framesize() (та інші параметри) після reset().
Коміти: d1e782df3
sensor.snapshot() викидає виключення при таймауті (behavior)¶
sensor.snapshot() тепер викидає RuntimeError("Sensor Timeout!!") при таймауті датчика замість нескінченного зависання. Обгорніть snapshot() у try / except RuntimeError, якщо потрібно обробляти таймаути.
Коміти: e3f41d674
sensor.set_pixformat() викидає виключення для непідтримуваного формату (behavior)¶
sensor.set_pixformat() тепер викидає виключення при непідтримуваному форматі пікселів замість повернення False. Код, який перевіряв повернення False, має замість цього перехоплювати виключення.
Коміти: e0c5822c2
Контрольний список міграції¶
Для чистого переходу на v1.2.0 зазвичай потрібно:
Явно встановити
sensor.set_pixformat()/sensor.set_framesize()післяsensor.reset()(зміна reset).Обгорнути
sensor.snapshot()уtry/except RuntimeError, якщо потрібно обробляти таймаути датчика (зміна snapshot).Перехоплювати виключення від
sensor.set_pixformat()замість перевіркиFalse(зміна set_pixformat).
Всі інші скрипти працюють без змін.