v2.5.0¶
v2.5.0 — функціонально насичений випуск для роботи із зображеннями: додано find_rects(), find_circles(), get_regression() (підбір прямої/регресії), find_number() (цифри LeNet), класи потоків ImageWriter / ImageReader, sensor.flush() / width() / height(), а також підтримку pyb.RTC. Завантаження зображень тепер використовує кадровий буфер — ознайомтеся з критичними змінами нижче.
Основні можливості¶
image.find_rects()— виявлення прямокутників/чотирикутників із виведенням кутів.image.find_circles()— виявлення кіл методом перетворення Хафа.image.get_regression()— апроксимація прямою методом найменших квадратів та робастним методом (Тейл-Сен).image.find_number()— розпізнавання цифр за допомогою LeNet.ImageWriter/ImageReader— запис і відтворення потоків зображень.Підтримка
pyb.RTC, а такожsensor.flush()/sensor.width()/sensor.height().Критична зміна: завантаження зображень тепер виконується через кадровий буфер і генерує виняток, якщо зображення завелике — див. критичні зміни.
Нові можливості¶
Виявлення ознак — додано
image.find_rects()(детектор чотирикутників AprilTag; об’єкти rect із полямиx/y/w/h/corners/magnitude),image.find_circles()(Хаф),image.get_regression()(підбір прямої методом найменших квадратів + робастний метод Тейл-Сен) таimage.find_number()(розпізнавання цифр LeNet), кожен із прикладами скриптів.Кути результатів — додано атрибут
cornersдо об’єктів результатів QR-коду / AprilTag / матриці даних / штрих-коду.Потоки зображень — додано класи
image.ImageWriter/image.ImageReader(формат вирівняних по 16 байт блоків) з прикладамиimage_writer.py/image_reader.py.Датчик — додано
sensor.flush()(передача кадрового буфера в IDE без знімку) таsensor.width()/sensor.height().pyb.RTC— увімкнено підтримку RTC з прикладомrtc.py.Додано каскад Хаара для виявлення котячих облич та приклад для Servo-Shield (PCA9685); інструмент
openmv-cascade.pyдля хост-комп’ютера отримав підтримку нового формату XML-каскаду OpenCV.
Інші зміни та вдосконалення¶
Кадровий буфер було рефакторено так, щоб методи зображень
copy_to_fbоновлювали попередній перегляд в IDE; шляхи доHaarCascade()більше не потребують початкового/(вбудований чи файловий варіант визначається автоматично); запис GIF/MJPEG тепер підтримує VGA (та GIF у форматі BAYER); вбудованийREADME.txtоновлено, а файл драйвераopenmv.infбільше не створюється на новій файловій системі.
Виправлення помилок¶
Обробка зображень:
Виправлено накопичення голосів у
find_circles(), зміщення rho вget_regression()при використанні ROI та витік пам’яті, злиття сегментів уfind_lines(), усереднення кутів уfind_blobs()та межі кольорів за замовчуванням (найменш обмежувальні), стабільність сортування ключових точок ORB / впорядкування дескрипторів і прапорець збігу, а також буферизоване завантаження каскаду Хаара (невирівняне читання).
Система:
Увімкнено
pybServo 3 (P9) (#256), виправлено ініціалізацію RTC, збільшено тайм-аут символу UART (#240) та виправлено неініціалізований прапорець «enabled» кадрового буфера датчика.
Апаратне забезпечення та підтримка плат¶
Критичні зміни API¶
Видимі для користувача зміни API між v2.4.1 та v2.5.0. Область застосування: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.
Ця критична зміна є поведінковою (той самий API, інший результат) — перевірте відповідні скрипти. Кожен хеш коміту посилається на його різницю на GitHub.
Завантаження зображень використовує кадровий буфер (поведінка)¶
image.Image / завантаження зображень тепер копіює завантажене зображення у основний кадровий буфер та генерує виняток, якщо зображення занадто велике. Завантаження, які раніше успішно виконувалися у буфер купи, тепер можуть зазнавати невдачі — переконайтеся, що завантажувані зображення вміщуються у кадровий буфер (або обробляйте нову помилку).
Коміти: 87d53385a
Контрольний список міграції¶
Переконайтеся, що завантажувані зображення вміщуються у кадровий буфер (або перехоплюйте нову помилку «image too large») там, де ви раніше покладалися на завантаження зображень у буфер купи (зміна завантаження зображень). Усі інші скрипти працюють без змін.