![Osnovni projekti OpenCV: 5 korakov Osnovni projekti OpenCV: 5 korakov](https://i.howwhatproduce.com/images/007/image-18326-j.webp)
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
![Osnovni projekti OpenCV Osnovni projekti OpenCV](https://i.howwhatproduce.com/images/007/image-18326-1-j.webp)
V tem projektu raziskujemo nekatere osnovne funkcije OpenCV skozi 4 preproste projekte, ki vključujejo video tok v živo. To so prepoznavanje obraza, odstranjevanje ozadja, posebno vizualno upodabljanje robov in uporaba učinka zameglitve video toka v živo. Moj glavni namen preizkušanja teh projektov je bil preprosto zmočiti noge z vmesnikom OpenCV, saj se nameravam poglobiti na področju računalniškega vida
Zaloge
- Računalnik z Pythonom
- Odprta knjižnica življenjepisov, knjižnica Numpy, knjižnica tkinter, knjižnica sys
- Kamera za povezavo z računalnikom (če računalnika še nima)
- Programska datoteka python (vključena v to navodilo)
- haarcascade xml datoteka (vključena v ta navodila)
Korak: Funkcija FaceDetect
![Funkcija FaceDetect Funkcija FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-2-j.webp)
![Funkcija FaceDetect Funkcija FaceDetect](https://i.howwhatproduce.com/images/007/image-18326-3-j.webp)
Ta funkcija prikazuje video posnetek vaše kamere z zelenimi kvadrati na vseh obrazih, ki jih pobere. V kodi uporabljamo funkcijo cv2. VideoCapture () za shranjevanje videoposnetka, ki ga zajemamo, v objekt z imenom "zajem". CAPTURE_INDEX je številka, ki jo nastavi vaš računalnik in ustreza indeksu vaše kamere na seznamu video vhodov v računalniku. Če zunanja kamera ni povezana z računalnikom, bi morala delovati 0 ali 1.
Objekt face_cascade se inicializira s funkcijo cascadeClassifier in datoteko "haarcascade_frontalface_default.xml", ki jo najdete v githubu OpenCV. Ta predmet uporabljamo za shranjevanje obrazov, zaznanih na "obrazih" seznama, kot vnos v štirih smereh, ki vsebuje obraze x koordinato, y koordinato, širino in višino. Nato s funkcijo cv2.rectangle narišemo pravokotnik, ki popolnoma obdaja obraz
Iz tega videoposnetka OpenCV zajame veliko slik v naši zanki while z uporabo capture.read () in shrani sliko v okvir, ki smo ga poimenovali "img". Vsaka slika se nato razlaga in spreminja, kot želimo. Za faceDetect naredimo sliko sivo s funkcijo cvtColor, ki pretvori katero koli sliko, podano v prvem parametru, v določeno vrsto barve slike, podano v drugem parametru. Seznam sprejemljivih vrednosti za drugi parameter najdete na spletu. Sliko nato prikažemo v oknu z imenom "Zaznavanje obraza" s funkcijo imshow (), ki vzame niz za ime okna in okvir slike.
Končno počakamo, da uporabnik vnese ključ q s funkcijo cv2.waitKey (). Maska 0xFF se uporablja kot konvencija za 64 -bitne računalnike. Ko uporabnik konča video tok, funkcija faceDetect sprosti objekt zajema in nato uniči vsa druga okna, odprta pod vmesnikom OpenCV. Vse druge funkcije sledijo podobni zasnovi.
Korak: Funkcija BackgroundRemove
![Ozadje Odstrani funkcijo Ozadje Odstrani funkcijo](https://i.howwhatproduce.com/images/007/image-18326-4-j.webp)
![Ozadje Odstrani funkcijo Ozadje Odstrani funkcijo](https://i.howwhatproduce.com/images/007/image-18326-5-j.webp)
Ta funkcija poskuša odstraniti del ozadja našega videoposnetka in pustiti samo sliko v ospredju. Pri nekaterih kamerah morda ne bo delovalo, saj uporabljajo funkcijo nastavitve osvetlitve, ki se aktivira, ko v okvir vstopijo različni predmeti/ žarišča. Če funkcija BackgroundRemove ne deluje, se ne sekirajte- to je lahko samo vaš fotoaparat!
Če želite uporabiti to funkcijo, se odmaknite od okvirja kamere in pritisnite tipko "d", da posnamete sliko ozadja. Pomembno je, da v ozadju ni premikajočih se predmetov, ki jih želite posneti. Nato lahko stopimo nazaj v okvir kamere. Če je funkcija delovala, se mora uporabnik videti le v videotoku funkcije. Morebitni šum/črni madeži na sliki v ospredju so lahko posledica nastavitve osvetlitve fotoaparata. Če želite zajeti drugo ozadje, pritisnite tipko "r" za ponovno inicializacijo, nato znova pritisnite "d".
Nekateri ključni odmiki za to funkcijo so uporaba "zastavice" logične vrednosti, ki se dvigne v trenutku, ko uporabnik pritisne gumb d. To zajema ozadje in nam omogoča, da ga odstranimo iz videoposnetka, ki ga funkcija pretočno predvaja. Sliko ozadja želimo shraniti v ref_img, tako da jo lahko ločimo od slike v ospredju, ki zajema kateri koli premikajoči se predmet. Uporabljamo funkcijo cv2.subtract (), da od slike ozadja odštejemo sliko sprednjega dela zemlje in obratno, nato pa takoj zatem prekličemo vse manjše razlike v obeh slikah. Ozadje je zatemnjeno.
Maska fgmask je narejena z uporabo razlike med tema dvema slikama in nato uporabljena za video tok funkcij s funkcijo OpenCV cv2.bitwise_and ().
3. korak: Funkcija VideoEdges
![Funkcija VideoEdges Funkcija VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-6-j.webp)
![Funkcija VideoEdges Funkcija VideoEdges](https://i.howwhatproduce.com/images/007/image-18326-7-j.webp)
Ta funkcija vrne naš video tok v živo, vendar zaznavni robovi postanejo beli, medtem ko je vse ostalo zatemnjeno. Ta funkcija se razlikuje od drugih funkcij, saj je pretvorba našega izvirnega videa iz formata RBG v HSV, kar pomeni odtenek, nasičenost in variacijo- drugačen način obdelave svetlobe in barv iz videa. S to metodo lahko v videoposnetku lažje ločimo obrise z uporabo filtra (red_low do red_high).
Canny Edge Detection se uporablja za zaznavanje robov na sliki. Za vhod sprejema sliko sive lestvice in uporablja večstopenjski algoritem.
4. korak: Funkcija VideoBlur
![Funkcija VideoBlur Funkcija VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-8-j.webp)
![Funkcija VideoBlur Funkcija VideoBlur](https://i.howwhatproduce.com/images/007/image-18326-9-j.webp)
Ta funkcija se uporablja za dodajanje učinka zamegljenosti našemu video toku. Preprosta funkcija kliče funkcijo GaussianBlur cv2 na našem okvirju. Dodatne informacije o funkciji gaussianBlur najdete tukaj:
opencv-python-tutroals.readthedocs.io/en/l…
5. korak: Izboljšave
Najbolj občutljiva funkcija v tem projektu je funkcija odstranjevanja ozadja, saj zahteva uporabo kamere, ki nima funkcije nastavitve osvetlitve. Morda je v knjižnici OpenCV boljši nabor funkcij, ki lahko upoštevajo to prilagoditev osvetlitve in gladko odstranijo ozadje (podobno kot zeleni zaslon).
Uporabili bi lahko tudi druge funkcije zaznavanja obrazov, ki bi lahko ustvarile objekte z večjo funkcionalnostjo, ki ne samo vračajo koordinate (x, y). Morda programa za prepoznavanje obrazov s sposobnostjo zapomnitve obrazov ne bi bilo preveč težko izvesti.
Funkcijo zameglitve lahko uporabnik z intuitivnim nadzorom dodatno prilagodi. Na primer, uporabnik bo morda želel prilagoditi intenzivnost učinka zamegljenosti ali izbrati določeno območje v okvirju za zameglitev.
Priporočena:
Osnovni program C ++: 11 korakov
![Osnovni program C ++: 11 korakov Osnovni program C ++: 11 korakov](https://i.howwhatproduce.com/images/002/image-4203-j.webp)
Osnovni program C ++: v tem programu se boste naučili osnov c ++ s kodiranjem preprostega programa c ++, ki bo ustvaril več uporabnikov in prikazal te uporabnike, upam, da boste uživali
Kako sestaviti igralni ali osnovni računalnik (vse komponente): 13 korakov
![Kako sestaviti igralni ali osnovni računalnik (vse komponente): 13 korakov Kako sestaviti igralni ali osnovni računalnik (vse komponente): 13 korakov](https://i.howwhatproduce.com/images/002/image-5475-j.webp)
Kako sestaviti igralni ali osnovni računalnik (vse komponente): Torej želite vedeti, kako sestaviti računalnik? V teh navodilih vas bom naučil, kako sestaviti osnovni namizni računalnik. Tu so potrebni deli: matična plošča ohišja računalnika (Prepričajte se, da je PGA, če AMD in LGA, če je Intel) Ohišje hladilnika procesorja Pow
NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov
![NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov](https://i.howwhatproduce.com/images/001/image-776-9-j.webp)
NAIN 1.0 - osnovni humanoidni robot, ki uporablja Arduino: Nain 1.0 bo v osnovi imel 5 snemljivih modulov - 1) Arm - ki jih je mogoče krmiliti preko servomotorjev. 2) Kolesa - ki jih je mogoče krmiliti z enosmernimi motorji. 3) Noga - Nain bo lahko premikal med kolesi ali nogami za gibanje. 4) Glava in
Osnovni vodič Arduino Bluetooth: 6 korakov (s slikami)
![Osnovni vodič Arduino Bluetooth: 6 korakov (s slikami) Osnovni vodič Arduino Bluetooth: 6 korakov (s slikami)](https://i.howwhatproduce.com/images/004/image-9932-j.webp)
Osnovna vadnica za Arduino Bluetooth: UPDATE: POSNOVLJENO VERZIJO TEGA ČLANKA LAHKO PREBERITE TUKAJ Ste kdaj pomislili, da bi s svojim pametnim telefonom upravljali elektronske naprave? Upravljanje vašega robota ali katere koli druge naprave s pametnim telefonom bo res kul. Tukaj je preprosta in preprosta
Funbot - osnovni motorizirani razširljivi robot: 7 korakov
![Funbot - osnovni motorizirani razširljivi robot: 7 korakov Funbot - osnovni motorizirani razširljivi robot: 7 korakov](https://i.howwhatproduce.com/images/004/image-11535-j.webp)
Funbot - Osnovni motorizirani razširljivi robot: Pozdravljeni, danes vam bom pokazal, kako sestaviti FunBot - super enostavnega motoriziranega robota, ki se lahko druži, riše vzorce, se vrti in spremeni v kolesnega robota. Razširljivo je z deli, releji in celo z mikrokrmilniki, vendar to sveti