Mastering OpenCV with Practical Computer Vision Projects / Опановуюємо OpenCV через практичні проекти комп'ютерного зору: Розділ 1. Ефект мультиплікації та зміна кольору шкіри для Android
| Английский оригинал | Перевод на украинский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Показуємо FPS у застосунку Atronax 15.02.21 в 09:23 |
|
|
Якщо існує необхідність показати кількість кадрів в секунду (FPD) на екрані, що не настільки важливо для повільного застосунку, як цей, але все ще корисно, слідуйте наступним крокам: Atronax 15.02.21 в 10:28 |
||
|
1. Скопіюйте файл src\org\opencv\samples\imagemanipulations\FpsMeter.java Atronax 15.02.21 в 10:29 |
||
|
2. Замініть назву пакету у верхній частині FpsMeter.java на com.Cartoonifier. Atronax 15.02.21 в 10:30 |
||
|
3. У файлі CartoonifierViewBase.java оголосіть змінну типу FpsMeter після "private byte[] mBuffer;": Atronax 15.02.21 в 10:31 |
||
|
4. Налаштуйте об'єкт FpsMeter у конструкторі CartoonifierViewBase(), після виклику "mHolder.addCallback(this);": Atronax 15.02.21 в 10:33 |
||
|
5. Виміряйте швидкість кожного кадру у функції run() після блоку try/catch: Atronax 15.02.21 в 10:34 |
||
|
6. Виведіть FPS на екран на кожному кадрі, у функції run() після Atronax 15.02.21 в 10:35 |
||
|
Змінюємо роздільну здатність камери Atronax 15.02.21 в 10:35 |
||
|
Якщо необхідно підвищити швидкість роботи програми, при цьому зниження якості не має значення, вочевидь треба або запросити з камери кадри меншого розміру, або зменшити отримані зображення. Код прикладу, покладеного в основу Cartoonifier, базується на використанні найближчої до висоти екрану роздільної здатності камери. Тому, якщо прилад має 5-мегапіксельну камеру, а екран - 640х480 пікселів, можна використати зображення розмірами 720х480. Щоб мати можливість обирати роздільну здатність, можна модифікувати параметри виклику setupCamera() у функції surfaceChanged() файлу CartoonifierViewBase.java. Наприклад: Atronax 15.02.21 в 10:44 |
||
|
public void surfaceChanged(SurfaceHolder _holder, int format, Atronax 15.02.21 в 10:45 |
||
|
Простий спосіб отримати зображення найвищої роздільної здатності з камери - передати велике значення розміру, наприклад 10000х10000, у результаті чого алгоритм обере максимально доступну (врахуйте, що це стосується характеристик попереднього перегляду, тобто відеопотоку камери, які часто значно нижчі, ніж для простих зображень). Або, якщо вимагається найбільша швидкість, передайте 1х1 в якості параметру, це дозволить знайти найнижчу роздільну здатність (наприклад, 160х120). Atronax 15.02.21 в 10:59 |
||
|
Підлаштовуємо застосунок Atronax 15.02.21 в 10:59 |
||
|
Створивши програму Cartoonifier для Android, ви маєте розуміти, що лежить в основі її роботи та для чого потрібні окремі частини. Тепер підлаштуйте її під власні потреби! Змініть графічний інтерфейс, поведінку та потік програми, константи фільтру мультиплікатора, алгоритм пошуку шкіри чи замініть код власними ідеями. Atronax 15.02.21 в 11:06 |
||
|
Алгоритм розпізнавання шкіри можна покращити безліччю способів, шляхом використання складніших варіантів (наприклад, тренованих моделей Гауса з недавніх записів конференцій CVPR та ICCV, що знаходяться за адресою http://www.cvpapers.com) чи застосування процесу розпізнавання (перегляньте відповідну частину розділу 8 "Розпізнавання облич за допомогою алгоритму Eigenfaces"), щоб існувала можливість знаходити обличчя, а не просити користувача помістити його в центр екрана. Майте на увазі, розпізнавання може зайняти тривалий час на деяких пристроях чи камерах з високою роздільною здатністю, тому цей підхід обмежений порівняно невисокою швидкістю обробки. Хоча швидкість смартфонів та планшетів значно зростає кожного року, тому з часом це стане меншою проблемою. Atronax 15.02.21 в 11:18 |
||
|
Найефективніший спосіб підвищити швидкість роботи мобільних програм комп'ютерного зору - максимально зменшити роздільну здатність камери (0.5 мегапікселя замість 5), рідше виділяти та звільняти пам'ять для зображень, проводити менше конвертацій (наприклад, шляхом підтримки формату BGRA в усьому коді). Можна також пошукати способи оптимізувати обробку зображень чи математичні бібліотеки від постачальника CPU вашого пристрою (як-от, NVIDIA Tegra, Texas Instruments OMAP, Samsung Exynos, Apple Ax чи QualComm Snapdragon) або для сімейства (наприклад, ARM Cortex-A9). Пам'ятайте, може існувати оптимізована версія OpenCV для цільової машини. Atronax 15.02.21 в 11:35 |
||
|
Щоб полегшити підлаштування NDK та коду обробки зображень для ПК, до книги додаються файли ImageUtils.cpp та ImageUtils.h. Вони включають корисні функції, як-от printMatInfo(), що виводить багато інформації про об'єкт cv::Mat, завдяки чому полегшується налагодження коду OpenCV. Також доступні макроси для профілювання, що дають змогу легко отримати детальну статистику С/C++ коду. Наприклад: Atronax 15.02.21 в 11:48 |
||
|
DECLARE_TIMING(myFilter); Atronax 15.02.21 в 11:50 |
||
|
В консолі ви отримаєте щось подібне: Atronax 15.02.21 в 11:51 |
||
|
Користь стає очевидною, коли код OpenCV працює не так, як слід; особливо під час розробки для мобільних пристроїв, коли часто неможливо використати налагоджувач IDE, а положення printf() не працюють. Однак, функції ImageUtils однаково добре підходять для мобільних та стаціонарних пристроїв. Atronax 15.02.21 в 11:57 |
||
|
Висновки Atronax 15.02.21 в 11:57 |
||
|
У цьому розділі показано декілька типів фільтрів обробки зображень, що можуть бути використані для створення різноманітних ефектів мультиплікації: простий режим скетчу, що схожий на малюнок олівцем, картини, яка виглядає як твір мистецтва, та мультиплікації, що розміщує скетч над картиною та робить зображення більш схожим на мультик. Також пояснюється як отримати інші смішні ефекти, наприклад режим "зла", що значно загострює шумні межі, та прибульця, який змушує шкіру виглядати яскраво зеленою. Atronax 15.02.21 в 12:12 |
||
|
Існує багато комерційних програм для смартфонів, які формують схожий смішний ефект на обличчі користувача, як-от фільтри мультиплікації та зміни кольору шкіри. Доступні також професійні інструменти, що базуються на схожих концепціях. Серед них інструменти для постобробки та згладження, які намагаються покращити вигляд жіночих облич, згладжуючи шкіру та залишаючи межі й інші фрагменти гострими, щоб їхні обличчя видавалися молодшими. У розділі пояснюється, як перенести настільну програму у варіант для Android, слідуючи спочатку рекомендованим орієнтирам розробки робочої версії для ПК, здійснивши портування та створивши графічний інтерфейс, що підходить мобільній програмі. Код обробки зображення використовується двома проєктами, тому читач має можливість модифікувати фільтри мультиплікації для настільного застосунку та, перебудовуючи версію для мобільних пристроїв, автоматично отримувати зміни в застосунку Android. Atronax 15.02.21 в 14:30 |
||
|
Спосіб використання OpenCV4Android часто змінюються, та й розробка для Android не стоїть на місці; тому в розділі пояснюється, як збудувати програму для Android, просто додаючи функціональність до одного з проєктів-прикладів OpenCV. Очікується, що читач може додати подібні можливості в еквівалентний проєкт у майбутніх версіях OpenCV4Android. Atronax 15.02.21 в 14:36 |
||
|
Книга включає вихідний код обох проєктів: для настільних та мобільних пристроїв. Atronax 15.02.21 в 14:40 |
