Съдържание:

Основни проекти на OpenCV: 5 стъпки
Основни проекти на OpenCV: 5 стъпки

Видео: Основни проекти на OpenCV: 5 стъпки

Видео: Основни проекти на OpenCV: 5 стъпки
Видео: Основные ошибки при возведении перегородок из газобетона #5 2024, Юли
Anonim
Основни проекти на OpenCV
Основни проекти на OpenCV

В този проект ние изследваме някои основни функционалности на OpenCV чрез 4 прости проекта, включващи видео поток на живо. Това са разпознаване на лица, премахване на фона, специално визуално изобразяване на ръбове и прилагане на ефект на замъгляване към видео потока на живо. Основната ми цел да опитам тези проекти беше просто да намокря краката си с интерфейса на OpenCV, тъй като смятам да се задълбоча в областта на компютърното зрение

Консумативи

  • Компютър с Python
  • Отворена библиотека с CV, Numpy библиотека, tkinter библиотека, sys библиотека
  • Камера за свързване към компютър (ако компютърът вече не включва такъв)
  • Python файл на програмата (включен в тази инструкция)
  • haarcascade xml файл (включен в тази инструкция)

Стъпка 1: Функция FaceDetect

Функция FaceDetect
Функция FaceDetect
Функция FaceDetect
Функция FaceDetect

Тази функция показва видеоклипа на вашата камера със зелени квадратчета на всякакви лица, които той заснеме. В кода използваме функцията 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 функция
BackgroundRemove функция
BackgroundRemove функция

Тази функция се опитва да премахне фоновата част на нашия видеоклип и да остави само изображението на преден план. Възможно е да не работи на някои камери, тъй като те използват функция за регулиране на осветлението, която се активира, когато различни обекти/ фокуси навлизат в кадъра. Ако функцията backgroundRemove не работи, не се притеснявайте- това може да е просто вашата камера!

За да използвате тази функция, се отдалечете от рамката на камерата и натиснете клавиша „d“, за да заснемете фоновото изображение. Важно е на заден план да няма движещи се обекти, които искате да заснемете. След това можем да се върнем в рамката на камерата. Ако функцията работи, потребителят трябва да се вижда само във видеопотока на функцията. Всеки шум/черни петна в изображението на преден план може да е резултат от настройката на осветлението на камерата. За да заснемете друг фон, натиснете клавиша „r“за повторна инициализация, след което натиснете отново „d“.

Някои ключови изводи за тази функция е използването на булева стойност "флаг", която се повдига в момента, в който потребителят натисне бутона d. Това улавя фона и ни позволява да го премахнем от видеоклипа, който се стриймва от функцията. Ние се стремим да съхраняваме фоновото изображение в ref_img, за да можем да го различим от изображението на преден план, което улавя всеки движещ се обект. Използваме функцията cv2.subtract (), за да извадим предното изображение от фоновото изображение и обратно, след което да анулираме малките разлики в двете изображения веднага след това. Фонът е затъмнен.

Fgmask се прави с помощта на разликата между тези две изображения и след това се прилага към видео потока на функциите с помощта на функцията OpenCV cv2.bitwise_and ().

Стъпка 3: Функция VideoEdges

Функция VideoEdges
Функция VideoEdges
Функция VideoEdges
Функция VideoEdges

Тази функция връща нашия видео поток на живо, но откриваемите ръбове се изобразяват бели, докато всичко останало е затъмнено. Това, което отличава тази функция от другите функции, е преобразуването на оригиналното ни видео от RBG формат в HSV, което означава нюанс, наситеност и вариация- различен метод за обработка на светлина и цвят от видео. С този метод можем по -лесно да различим очертанията във видеото, като приложим филтър (red_low до red_high).

Canny Edge Detection се използва за откриване на ръбовете в изображението. Той приема изображение за сива скала като вход и използва многостепенен алгоритъм.

Стъпка 4: Функция VideoBlur

Функция VideoBlur
Функция VideoBlur
Функция VideoBlur
Функция VideoBlur

Тази функция се използва за добавяне на ефект на замъгляване към нашия видео поток. Функцията просто извиква функцията GaussianBlur cv2 на нашата рамка. Допълнителна информация за функцията gaussianBlur можете да намерите тук:

opencv-python-tutroals.readthedocs.io/en/l…

Стъпка 5: Подобрения

Най -чувствителната функция в този проект е функцията за премахване на фона, тъй като изисква използването на камера, която няма функционалност за регулиране на осветлението. Може да има по -добър набор от функции в библиотеката на OpenCV, които могат да отчетат тази настройка на осветлението и плавно да премахнат фона (подобно на зелен екран).

Бихме могли да използваме и други функции за разпознаване на лица, които могат да произвеждат обекти с повече функции, различни от просто връщане (x, y) координати. Може би програма за разпознаване на лица с възможност за запомняне на лица не би била твърде трудна за изпълнение.

Функцията за размазване може да бъде направена по -персонализирана чрез интуитивен контрол от потребителя. Например, потребителят може да иска да регулира интензивността на ефекта на размазване или да избере определена област в рамките на кадъра, за да се размаже.

Препоръчано: