Мазмұны:

OpenCV негізгі жобалары: 5 қадам
OpenCV негізгі жобалары: 5 қадам

Бейне: OpenCV негізгі жобалары: 5 қадам

Бейне: OpenCV негізгі жобалары: 5 қадам
Бейне: Расчет уровня вовлеченности сотрудников. Бережливое производство. 2024, Қараша
Anonim
OpenCV негізгі жобалары
OpenCV негізгі жобалары

Бұл жобада біз OpenCV -тің негізгі функционалдығын тікелей бейне ағыны бар 4 қарапайым жоба арқылы зерттейміз. Бұл бетті тану, фонды жою, жиектерді арнайы визуалды түрде көрсету және тікелей бейне ағынына бұлдыр әсерді қолдану. Бұл жобаларды іске асырудағы басты мақсатым - OpenCV интерфейсімен аяғымды жай ғана ылғалдандыру болды, өйткені мен компьютерді көру саласында тереңірек зерттеуді жоспарлап отырмын.

Жабдықтар

  • Python жұмыс істейтін компьютер
  • Түйіндеме кітапханасы, Numpy кітапханасы, tkinter кітапханасы, sys кітапханасы
  • Компьютерге қосылуға арналған камера (егер компьютерде бұрыннан жоқ болса)
  • Бағдарламаның python файлы (осы нұсқаулыққа енгізілген)
  • haarcascade xml файлы (осы нұсқаулыққа енгізілген)

1 -қадам: FaceDetect функциясы

FaceDetect функциясы
FaceDetect функциясы
FaceDetect функциясы
FaceDetect функциясы

Бұл функция камераның бейнесін кез келген бетінде жасыл төртбұрыштармен көрсетеді. Кодта біз cv2. VideoCapture () функциясын қолданып, түсіріп жатқан бейнені «түсіру» деп аталатын объектіде сақтаймыз. CAPTURE_INDEX - бұл компьютер орнатқан нөмір, ол компьютердің бейне енгізу тізіміндегі камераның индексіне сәйкес келеді. Егер компьютерде сыртқы камера болмаса, 0 немесе 1 жұмыс істеуі керек.

Face_cascade нысаны cascadeClassifier функциясы мен OpenCV github табылған «haarcascade_frontalface_default.xml» файлының көмегімен инициализацияланады. Біз бұл нысанды «беттер» тізімінде анықталған беттерді x координаты, у координаты, ені мен биіктігін ұстап тұратын төрт жақты қоспа ретінде сақтау үшін қолданамыз. Содан кейін біз cv2.rectangle функциясын қолдана отырып, бетті керемет түрде қоршайтын тіктөртбұрыш саламыз

Бұл бейнеден OpenCV көптеген суреттерді біздің циклде capture.read () көмегімен алады және суретті біз «img» деп атаған кадрда сақтайды. Әр сурет біз қалағандай түсіндіріледі және өзгертіледі. FaceDetect үшін біз бірінші параметрде берілген кез келген кескінді екінші параметрде көрсетілген кескін түсінің белгілі бір түріне түрлендіретін cvtColor функциясын қолданып суретті сұр түске айналдырамыз. Екінші параметр үшін қолайлы мәндердің тізімін Интернеттен табуға болады. Содан кейін біз кескінді терезені атау үшін жолды алатын imshow () функциясын қолдана отырып, «Бетті анықтау» деп аталатын терезеде көрсетеміз.

Соңында біз cv2.waitKey () функциясын қолдана отырып, пайдаланушының q пернесін енгізуін күтеміз. 0xFF маскасы 64 биттік компьютерлер үшін шарт ретінде пайдаланылады. Пайдаланушы бейне ағынды аяқтағаннан кейін, faceDetect функциясы түсіру объектісін босатады, содан кейін OpenCV интерфейсінде ашылған кез келген басқа терезелерді жояды. Барлық басқа функциялар ұқсас дизайн құрылымына сәйкес келеді.

2 -қадам: BackgroundRemove функциясы

Фонды жою функциясы
Фонды жою функциясы
Фонды жою функциясы
Фонды жою функциясы

Бұл функция біздің бейненің фондық бөлігін алып тастауға және тек алдыңғы суретті қалдыруға тырысады. Бұл кейбір камераларда жұмыс істемеуі мүмкін, себебі олар жарықтандыруды реттеу функциясын қолданады, ол кадрға әр түрлі объектілер/ фокустар кірген кезде қосылады. Егер backgroundRemove функциясы жұмыс істемесе, алаңдамаңыз- бұл сіздің камераңыз болуы мүмкін!

Бұл функцияны пайдалану үшін камера жақтауынан алыстап, фондық суретті түсіру үшін «d» пернесін басыңыз. Фонда түсіргіңіз келетін қозғалатын нысандардың болмауы маңызды. Содан кейін біз камера жақтауына қайта кіре аламыз. Егер функция жұмыс істесе, пайдаланушы тек функцияның бейне ағынында өзін көруі керек. Алдыңғы суреттегі кез келген шу/қара дақтар камераның жарықтандыруды реттеуінің нәтижесі болуы мүмкін. Басқа фон түсіру үшін «r» пернесін қайта инициализациялау үшін басыңыз, содан кейін «d» түймесін қайтадан басыңыз.

Бұл функцияның негізгі шешімдері-бұл пайдаланушы d түймесін басқан сәтте көтерілетін «жалауша» логикалық мәнін қолдану. Бұл фонды түсіреді және оны функция арқылы таратылатын бейнеден жоюға мүмкіндік береді. Біз фондық суретті ref_img -те сақтауға тырысамыз, осылайша оны кез келген қозғалатын нысанды түсіретін алдыңғы суреттен ажырата аламыз. Біз cv2.subtract () функциясын фондық суреттен фондық суреттен шығару үшін қолданамыз және керісінше, содан кейін екі суреттегі кішігірім айырмашылықтарды бірден алып тастаймыз. Фон қараңғыланған.

Fgmask осы екі кескіннің арасындағы айырмашылықты қолдану арқылы жасалады, содан кейін OpenCV cv2.bitwise_and () функциясын қолдана отырып, бейне ағынының функциясына қолданылады.

3 -қадам: VideoEdges функциясы

VideoEdges функциясы
VideoEdges функциясы
VideoEdges функциясы
VideoEdges функциясы

Бұл функция біздің тікелей бейне ағынымызды қайтарады, бірақ анықталатын жиектер ақ түске боялған, ал қалғандары қара түске боялған. Бұл функцияның басқа функциялардан ерекшелігі- бұл біздің түпнұсқалық бейнені RBG форматынан HSV-ге түрлендіру, ол реңкті, қанықтылықты және өзгерісті білдіреді- бейнеден жарық пен түсті өңдеудің басқа әдісі. Бұл әдіс арқылы біз фильтрді қолдану арқылы бейненің контурларын оңай ажыратамыз (қызылдан қызылға дейін).

Canny Edge Detection кескіннің жиектерін анықтау үшін қолданылады. Ол сұр масштабты суретті кіріс ретінде қабылдайды және ол көп сатылы алгоритмді қолданады.

4 -қадам: VideoBlur функциясы

VideoBlur функциясы
VideoBlur функциясы
VideoBlur функциясы
VideoBlur функциясы

Бұл функция біздің бейне ағынымызға бұлыңғырлық әсерін қосу үшін қолданылады. Қарапайым функция біздің кадрдағы GaussianBlur cv2 функциясын шақырады. GaussianBlur функциясы туралы қосымша ақпаратты мына жерден табуға болады:

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

5 -қадам: жақсартулар

Бұл жобаның ең сезімтал функциясы фонды жою функциясы болып табылады, себебі ол жарықтандыруды реттеу функциясы жоқ камераны қолдануды талап етеді. OpenCV кітапханасында жарықтандырудың осы реттелуін есепке алатын және фонды біркелкі алып тастайтын (жасыл экранға ұқсас) жақсы функциялар жиынтығы болуы мүмкін.

Біз сондай -ақ (x, y) координаттарын қайтарудан басқа, функционалдығы көбірек объектілерді шығара алатын бетті анықтаудың басқа функцияларын қолдана аламыз. Беттерді есте сақтау қабілеті бар бетті тану бағдарламасын іске асыру қиынға соқпайтын шығар.

Бұлыңғырлық функциясын пайдаланушы интуитивті басқару арқылы көбірек теңшеуге болады. Мысалы, пайдаланушы бұлыңғырлық әсерінің қарқындылығын реттеуі немесе бұлыңғыр ету үшін кадр ішіндегі белгілі бір аймақты таңдауы мүмкін.

Ұсынылған: