Мазмұны:
- Жабдықтар
- 1 -қадам: FaceDetect функциясы
- 2 -қадам: BackgroundRemove функциясы
- 3 -қадам: VideoEdges функциясы
- 4 -қадам: VideoBlur функциясы
- 5 -қадам: жақсартулар
Бейне: OpenCV негізгі жобалары: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Бұл жобада біз OpenCV -тің негізгі функционалдығын тікелей бейне ағыны бар 4 қарапайым жоба арқылы зерттейміз. Бұл бетті тану, фонды жою, жиектерді арнайы визуалды түрде көрсету және тікелей бейне ағынына бұлдыр әсерді қолдану. Бұл жобаларды іске асырудағы басты мақсатым - OpenCV интерфейсімен аяғымды жай ғана ылғалдандыру болды, өйткені мен компьютерді көру саласында тереңірек зерттеуді жоспарлап отырмын.
Жабдықтар
- Python жұмыс істейтін компьютер
- Түйіндеме кітапханасы, Numpy кітапханасы, tkinter кітапханасы, sys кітапханасы
- Компьютерге қосылуға арналған камера (егер компьютерде бұрыннан жоқ болса)
- Бағдарламаның python файлы (осы нұсқаулыққа енгізілген)
- haarcascade xml файлы (осы нұсқаулыққа енгізілген)
1 -қадам: 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 функциясы
Бұл функция біздің тікелей бейне ағынымызды қайтарады, бірақ анықталатын жиектер ақ түске боялған, ал қалғандары қара түске боялған. Бұл функцияның басқа функциялардан ерекшелігі- бұл біздің түпнұсқалық бейнені RBG форматынан HSV-ге түрлендіру, ол реңкті, қанықтылықты және өзгерісті білдіреді- бейнеден жарық пен түсті өңдеудің басқа әдісі. Бұл әдіс арқылы біз фильтрді қолдану арқылы бейненің контурларын оңай ажыратамыз (қызылдан қызылға дейін).
Canny Edge Detection кескіннің жиектерін анықтау үшін қолданылады. Ол сұр масштабты суретті кіріс ретінде қабылдайды және ол көп сатылы алгоритмді қолданады.
4 -қадам: VideoBlur функциясы
Бұл функция біздің бейне ағынымызға бұлыңғырлық әсерін қосу үшін қолданылады. Қарапайым функция біздің кадрдағы GaussianBlur cv2 функциясын шақырады. GaussianBlur функциясы туралы қосымша ақпаратты мына жерден табуға болады:
opencv-python-tutroals.readthedocs.io/kz/l…
5 -қадам: жақсартулар
Бұл жобаның ең сезімтал функциясы фонды жою функциясы болып табылады, себебі ол жарықтандыруды реттеу функциясы жоқ камераны қолдануды талап етеді. OpenCV кітапханасында жарықтандырудың осы реттелуін есепке алатын және фонды біркелкі алып тастайтын (жасыл экранға ұқсас) жақсы функциялар жиынтығы болуы мүмкін.
Біз сондай -ақ (x, y) координаттарын қайтарудан басқа, функционалдығы көбірек объектілерді шығара алатын бетті анықтаудың басқа функцияларын қолдана аламыз. Беттерді есте сақтау қабілеті бар бетті тану бағдарламасын іске асыру қиынға соқпайтын шығар.
Бұлыңғырлық функциясын пайдаланушы интуитивті басқару арқылы көбірек теңшеуге болады. Мысалы, пайдаланушы бұлыңғырлық әсерінің қарқындылығын реттеуі немесе бұлыңғыр ету үшін кадр ішіндегі белгілі бір аймақты таңдауы мүмкін.
Ұсынылған:
Arduino -ны ғылыми жобада RADAR қалай жасауға болады - Arduino үздік жобалары: 5 қадам
Arduino -ны ғылыми жобада RADAR қалай жасауға болады | Arduino -ның ең жақсы жобалары: Сәлем достар, мен бұл нұсқаулықта мен сізге arduino нано көмегімен таңғажайып радар жүйесін қалай жасау керектігін көрсетемін, бұл жоба ғылыми жобалар үшін өте қолайлы және сіз оны өте аз инвестиция мен мүмкіндігіңізбен оңай жасай аласыз
16x16 RGB LED панелі Arduino жобалары: 5 қадам (суреттермен)
16x16 RGB жарықдиодты панель Arduino жобалары: Барлығына сәлем, мен бұл жобаны жариялап отырмын, өйткені мен әркімге 16x16 RGB ғажайып жарықдиодты панельдердің бірімен ойнауға қарапайым орын болғанын қалаймын. Мен басқа жобалардың идеяларын алдым және оларды осы жобаға өзгерттім. Бұл сізге
ESP8266 қолданатын IoT -тың үздік жобалары: 8 қадам
ESP8266 қолданатын IoT -тың ең жақсы жобалары: Қазіргі уақытта Машинада бұлтта бөлісуге болатын, бақылау, талдау немесе іске қосу сияқты көптеген мақсаттарға арналған мәліметтер бар. Машиналар бір -бірімен сөйлеседі. ESP8266 - бұл жұмысты орындайтын модульдердің бірі
Жарықдиодты диммер схемасы - 555 Таймер жобалары: 5 қадам
Жарықдиодты диммер схемасы | 555 Таймер жобалары: Жобаның толық сипаттамасын табыңыз & Барлық пайдалы материалдар, оның ішінде схема / схемалық аппараттық құрал / компоненттер тізімінің кодтары / мәліметтер алгоритмінің кестесі / түйреуіштің конфигурациясы және т
DIY жобалары - менің аквариум контроллері: 4 қадам
DIY жобалары - Менің аквариум контроллерім: бұл жерде ешқандай жаңа канал жоқ, бұл «жаңарту»; демалыс жылдамдығының жоғарылауы, температураның жоғарылауы, температураның жоғарылауы