![Основни проекти на OpenCV: 5 стъпки Основни проекти на OpenCV: 5 стъпки](https://i.howwhatproduce.com/images/007/image-18326-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57
![Основни проекти на OpenCV Основни проекти на OpenCV](https://i.howwhatproduce.com/images/007/image-18326-1-j.webp)
В този проект ние изследваме някои основни функционалности на OpenCV чрез 4 прости проекта, включващи видео поток на живо. Това са разпознаване на лица, премахване на фона, специално визуално изобразяване на ръбове и прилагане на ефект на замъгляване към видео потока на живо. Основната ми цел да опитам тези проекти беше просто да намокря краката си с интерфейса на OpenCV, тъй като смятам да се задълбоча в областта на компютърното зрение
Консумативи
- Компютър с Python
- Отворена библиотека с CV, Numpy библиотека, tkinter библиотека, sys библиотека
- Камера за свързване към компютър (ако компютърът вече не включва такъв)
- Python файл на програмата (включен в тази инструкция)
- haarcascade xml файл (включен в тази инструкция)
Стъпка 1: Функция FaceDetect
![Функция FaceDetect Функция FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-2-j.webp)
![Функция FaceDetect Функция FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-3-j.webp)
Тази функция показва видеоклипа на вашата камера със зелени квадратчета на всякакви лица, които той заснеме. В кода използваме функцията cv2. VideoCapture (), за да съхраняваме видеоклипа, който заснемаме, в обект, наречен "улавяне". CAPTURE_INDEX е номер, зададен от вашия компютър, който съответства на индекса на вашата камера в списъка за видео вход на компютъра. Ако нямате външна камера свързана към компютъра, 0 или 1 трябва да работят.
Обектът face_cascade се инициализира с помощта на функцията cascadeClassifier и файла "haarcascade_frontalface_default.xml", намерен в OpenCV github. Използваме този обект, за да съхраняваме лицата, открити в „лицата“на списъка, като вход с четири посоки, съдържащ лицата x координата, y координата, ширина и височина. След това нарисуваме правоъгълник, който перфектно обхваща лицето, използвайки функцията cv2.rectangle
От този видеоклип OpenCV улавя много изображения в нашия цикъл while, като използва capture.read () и съхранява изображението в рамка, наречена „img“. След това всяко изображение се интерпретира и променя, както желаем. За faceDetect правим изображението сиво, като използваме функцията cvtColor, която преобразува всяко изображение, дадено в първия параметър, в определен тип цвят на изображението, посочен във втория параметър. Списъкът на допустимите стойности за втория параметър може да бъде намерен онлайн. След това показваме изображението в прозорец, наречен „Откриване на лицето“, използвайки функцията imshow (), която взема низ за името на прозореца и рамката на изображението, които да бъдат показани.
Накрая изчакваме потребителят да въведе клавиша q с помощта на функцията cv2.waitKey (). Маската 0xFF се използва като конвенция за 64 -битови компютри. След като потребителят приключи видеопотока, функцията faceDetect освобождава обекта за улавяне и след това унищожава всички други прозорци, отворени под интерфейса на OpenCV. Всички останали функции следват подобна структура на дизайна.
Стъпка 2: Функция BackgroundRemove
![BackgroundRemove функция BackgroundRemove функция](https://i.howwhatproduce.com/images/007/image-18326-4-j.webp)
![BackgroundRemove функция BackgroundRemove функция](https://i.howwhatproduce.com/images/007/image-18326-5-j.webp)
Тази функция се опитва да премахне фоновата част на нашия видеоклип и да остави само изображението на преден план. Възможно е да не работи на някои камери, тъй като те използват функция за регулиране на осветлението, която се активира, когато различни обекти/ фокуси навлизат в кадъра. Ако функцията backgroundRemove не работи, не се притеснявайте- това може да е просто вашата камера!
За да използвате тази функция, се отдалечете от рамката на камерата и натиснете клавиша „d“, за да заснемете фоновото изображение. Важно е на заден план да няма движещи се обекти, които искате да заснемете. След това можем да се върнем в рамката на камерата. Ако функцията работи, потребителят трябва да се вижда само във видеопотока на функцията. Всеки шум/черни петна в изображението на преден план може да е резултат от настройката на осветлението на камерата. За да заснемете друг фон, натиснете клавиша „r“за повторна инициализация, след което натиснете отново „d“.
Някои ключови изводи за тази функция е използването на булева стойност "флаг", която се повдига в момента, в който потребителят натисне бутона d. Това улавя фона и ни позволява да го премахнем от видеоклипа, който се стриймва от функцията. Ние се стремим да съхраняваме фоновото изображение в ref_img, за да можем да го различим от изображението на преден план, което улавя всеки движещ се обект. Използваме функцията cv2.subtract (), за да извадим предното изображение от фоновото изображение и обратно, след което да анулираме малките разлики в двете изображения веднага след това. Фонът е затъмнен.
Fgmask се прави с помощта на разликата между тези две изображения и след това се прилага към видео потока на функциите с помощта на функцията OpenCV cv2.bitwise_and ().
Стъпка 3: Функция VideoEdges
![Функция VideoEdges Функция VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-6-j.webp)
![Функция VideoEdges Функция VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-7-j.webp)
Тази функция връща нашия видео поток на живо, но откриваемите ръбове се изобразяват бели, докато всичко останало е затъмнено. Това, което отличава тази функция от другите функции, е преобразуването на оригиналното ни видео от RBG формат в HSV, което означава нюанс, наситеност и вариация- различен метод за обработка на светлина и цвят от видео. С този метод можем по -лесно да различим очертанията във видеото, като приложим филтър (red_low до red_high).
Canny Edge Detection се използва за откриване на ръбовете в изображението. Той приема изображение за сива скала като вход и използва многостепенен алгоритъм.
Стъпка 4: Функция VideoBlur
![Функция VideoBlur Функция VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-8-j.webp)
![Функция VideoBlur Функция VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-9-j.webp)
Тази функция се използва за добавяне на ефект на замъгляване към нашия видео поток. Функцията просто извиква функцията GaussianBlur cv2 на нашата рамка. Допълнителна информация за функцията gaussianBlur можете да намерите тук:
opencv-python-tutroals.readthedocs.io/en/l…
Стъпка 5: Подобрения
Най -чувствителната функция в този проект е функцията за премахване на фона, тъй като изисква използването на камера, която няма функционалност за регулиране на осветлението. Може да има по -добър набор от функции в библиотеката на OpenCV, които могат да отчетат тази настройка на осветлението и плавно да премахнат фона (подобно на зелен екран).
Бихме могли да използваме и други функции за разпознаване на лица, които могат да произвеждат обекти с повече функции, различни от просто връщане (x, y) координати. Може би програма за разпознаване на лица с възможност за запомняне на лица не би била твърде трудна за изпълнение.
Функцията за размазване може да бъде направена по -персонализирана чрез интуитивен контрол от потребителя. Например, потребителят може да иска да регулира интензивността на ефекта на размазване или да избере определена област в рамките на кадъра, за да се размаже.
Препоръчано:
Малки драйвери на H-Bridge - Основни положения: 6 стъпки (със снимки)
![Малки драйвери на H-Bridge - Основни положения: 6 стъпки (със снимки) Малки драйвери на H-Bridge - Основни положения: 6 стъпки (със снимки)](https://i.howwhatproduce.com/images/001/image-733-j.webp)
Малки драйвери на H-Bridge | Основи: Здравейте и добре дошли отново в друг Instructable! В предишния ви показах как създадох намотки в KiCad, използвайки скрипт на python. След това създадох и тествах няколко варианта на бобини, за да видя кой работи най -добре. Моята цел е да заместя огромния
HC-05 (bluetooth) модул за домашна автоматизация Основни: 3 стъпки
![HC-05 (bluetooth) модул за домашна автоматизация Основни: 3 стъпки HC-05 (bluetooth) модул за домашна автоматизация Основни: 3 стъпки](https://i.howwhatproduce.com/images/001/image-126-9-j.webp)
Модул HC-05 (bluetooth) за домашна автоматизация Основен: В последния си проект управлявах LED с помощта на бутон, но в този проект замених PUSH BUTTON с модул HC-05. Силно препоръчвам да преминете през тези проекти преди продължава с този проект. Всички подробности ще получите в
Индикатор за нивото на водата - Основни схеми на транзисторите: 5 стъпки
![Индикатор за нивото на водата - Основни схеми на транзисторите: 5 стъпки Индикатор за нивото на водата - Основни схеми на транзисторите: 5 стъпки](https://i.howwhatproduce.com/images/009/image-25665-j.webp)
Индикатор за нивото на водата | Основни схеми на транзисторите: Маркерът за нивото на водата е устройство с електронна схема, което прехвърля данни обратно към контролната платка, за да покаже дали водният път има високо или ниско ниво на водата. Някои маркери за нивото на водата използват комбинация от тестови сензори или промени за откриване на нивата на водата. Там
Основни положения на сензора за влажност: 3 стъпки
![Основни положения на сензора за влажност: 3 стъпки Основни положения на сензора за влажност: 3 стъпки](https://i.howwhatproduce.com/images/002/image-3962-31-j.webp)
Основи на сензора за влажност: Това е основен урок за това как да използвате сензорния модул DHT 11 с дъска Arduino
ОСНОВНИ УРОКИ ЗА ЕЗИК НА МАРКИРАНЕ НА ИЗКУСТВЕНА ИНТЕЛЕКТИВНОСТ (AIML) ЧРЕЗ НЕТЕПАД: 8 стъпки
![ОСНОВНИ УРОКИ ЗА ЕЗИК НА МАРКИРАНЕ НА ИЗКУСТВЕНА ИНТЕЛЕКТИВНОСТ (AIML) ЧРЕЗ НЕТЕПАД: 8 стъпки ОСНОВНИ УРОКИ ЗА ЕЗИК НА МАРКИРАНЕ НА ИЗКУСТВЕНА ИНТЕЛЕКТИВНОСТ (AIML) ЧРЕЗ НЕТЕПАД: 8 стъпки](https://i.howwhatproduce.com/images/003/image-8321-9-j.webp)
ОСНОВНИ УРОКИ ЗА ЕЗИК НА МАРКУВАНЕТО НА ИЗКУСТВЕНА ИНТЕЛЕКТИВНОСТ (AIML) ЧРЕЗ НЕЗАПИС: Езикът за маркиране на изкуствен интелект (AIML) е език за програмиране, който е спецификация на Extensible Markup Language (XML), използвана от chatbot, verbot, pandorabot, superbot и други говорещи роботи. Той е разработен от д -р Ричард Уолъс и