Мазмуну:

OpenCV негизги долбоорлору: 5 кадам
OpenCV негизги долбоорлору: 5 кадам

Video: OpenCV негизги долбоорлору: 5 кадам

Video: OpenCV негизги долбоорлору: 5 кадам
Video: Lesson 28: Car-6 SunFounder self Driving Arduino car using | Robojax 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" файлын колдонуу менен инициализацияланат. Биз бул объектти "жүздөр" тизмесинде аныкталган жүздөрдү х координаты, у координаты, туурасы жана бийиктиги бар төрт тараптуу жазуу катары сактоо үчүн колдонобуз. Андан кийин cv2.rectangle функциясын колдонуп, жүздү кемчиликсиз курчап турган тик бурчтукту тартабыз

Бул видеодон OpenCV көптөгөн сүрөттөрдү биздин while циклинде capture.read () аркылуу тартып, сүрөттү биз "img" деп аталган алкакта сактайт. Ар бир сүрөт биз каалагандай чечмеленет жана өзгөртүлөт. FaceDetect үчүн, биз cvtColor функциясын колдонуп, сүрөттү боз кылып коёбуз, ал биринчи параметрде берилген бардык сүрөттү экинчи параметрде көрсөтүлгөн сүрөт түсүнүн белгилүү бир түрүнө айландырат. Экинчи параметр үчүн алгылыктуу баалуулуктардын тизмесин интернеттен тапса болот. Андан кийин, сүрөттү терезенин атына жана сүрөттүн алкагына сапты камтыган imshow () функциясын колдонуп, "Жүздү аныктоо" аттуу терезеде көрсөтөбүз.

Акырында, биз cv2.waitKey () функциясын колдонуп, q баскычын колдонуучунун киришин күтөбүз. 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 Function

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) координаттарын кайтаруудан башка функционалдуу объектилерди чыгара турган башка жүздү аныктоо функцияларын колдоно алмакпыз. Балким, жүздөрдү эстөө жөндөмү бар жүздү таануу программасын ишке ашыруу өтө кыйын болбойт.

Колдонуучунун интуитивдик көзөмөлү аркылуу мунарыктоо функциясын көбүрөөк ыңгайлаштырууга болот. Мисалы, колдонуучу бүдөмүктөтүү эффектинин интенсивдүүлүгүн тууралоону же кадрдын ичиндеги белгилүү бир аймакты тандап алууну каалашы мүмкүн.

Сунушталууда: