Indholdsfortegnelse:

OpenCV Basic -projekter: 5 trin
OpenCV Basic -projekter: 5 trin

Video: OpenCV Basic -projekter: 5 trin

Video: OpenCV Basic -projekter: 5 trin
Video: Как установить и настроить Python3.5 + OpenCV3.1 #python #opencv 2024, Juli
Anonim
OpenCV Basic -projekter
OpenCV Basic -projekter

I dette projekt udforsker vi nogle grundlæggende OpenCV -funktionaliteter gennem 4 enkle projekter, der involverer en live videostream. Disse er ansigtsgenkendelse, fjernelse af baggrunde, særlig visuel gengivelse af kanter og anvendelse af en sløringseffekt på den levende videostream. Mit hovedformål med at prøve disse projekter var simpelthen at gøre mine fødder våde med OpenCV -grænsefladen, da jeg planlægger at dykke dybere inden for computersyn

Forbrugsvarer

  • Computer, der kører Python
  • Åbent CV -bibliotek, Numpy -bibliotek, tkinter -bibliotek, sys -bibliotek
  • Kamera til tilslutning til computer (hvis computeren ikke allerede indeholder et)
  • Programmets python -fil (inkluderet i denne instruks)
  • haarcascade xml -fil (inkluderet i denne instruks)

Trin 1: FaceDetect -funktion

FaceDetect -funktion
FaceDetect -funktion
FaceDetect -funktion
FaceDetect -funktion

Denne funktion viser kameraets video med grønne firkanter på alle ansigter, den optager. I koden bruger vi funktionen cv2. VideoCapture () til at gemme den video, vi optager i et objekt med navnet "capture". CAPTURE_INDEX er et tal, der er indstillet af din computer, og som svarer til indekset for dit kamera i computerens videoinputliste. Hvis du ikke har et eksternt kamera tilsluttet din computer, bør 0 eller 1 fungere.

Face_cascade -objektet initialiseres ved hjælp af funktionen cascadeClassifier og filen "haarcascade_frontalface_default.xml", der findes i OpenCV -github. Vi bruger dette objekt til at gemme de ansigter, der er registreret i listen "ansigter" som en firevejs-indtastning, der holder ansigterne x-koordinat, y-koordinat, bredde og højde. Vi tegner derefter et rektangel, der omslutter ansigtet perfekt ved hjælp af funktionen cv2.rectangle

Fra denne video fanger OpenCV mange billeder i vores loop mens vi bruger capture.read () og gemmer billedet i en ramme, vi kaldte "img". Hvert billede fortolkes og ændres derefter, som vi ønsker det. For faceDetect gør vi billedet gråt ved hjælp af cvtColor -funktionen, der konverterer det billede, der er givet i den første parameter, til en bestemt type billedfarve, der er angivet i den anden parameter. Listen over acceptable værdier for den anden parameter findes online. Vi viser derefter billedet i et vindue med navnet "Detecting the face" ved hjælp af funktionen imshow (), der tager en streng til vinduesnavnet og billedrammen, der skal vises.

Endelig venter vi på, at brugeren indtaster q -tasten ved hjælp af funktionen cv2.waitKey (). 0xFF -masken bruges som en konvention til 64 bit computere. Efter at brugeren har afsluttet videostrømmen, frigør faceDetect -funktionen capture -objektet og ødelægger derefter alle andre vinduer, der åbnes under OpenCV -grænsefladen. Alle de andre funktioner følger en lignende designstruktur.

Trin 2: BackgroundRemove -funktion

Baggrund Fjern funktion
Baggrund Fjern funktion
Baggrund Fjern funktion
Baggrund Fjern funktion

Denne funktion forsøger at fjerne baggrundsdelen af vores video og kun efterlade forgrundsbilledet. Det fungerer muligvis ikke på nogle kameraer, da de anvender en lysjusteringsfunktion, der aktiveres, når forskellige objekter/ foci kommer ind i rammen. Hvis din backgroundRemove-funktion ikke virker, skal du ikke bekymre dig- det kan bare være dit kamera!

For at bruge denne funktion skal du gå væk fra kamerarammen og trykke på "d" -tasten for at fange baggrundsbilledet. Det er vigtigt, at der ikke er bevægelige objekter i baggrunden, du ønsker at fange. Derefter kan vi træde tilbage i kamerarammen. Hvis funktionen fungerede, skulle brugeren kun se sig selv på funktionens videostream. Enhver støj/sorte klatter i forgrundsbilledet kan være et resultat af kameraets lysjustering. For at fange en anden baggrund skal du trykke på "r" -tasten for at geninitialisere og derefter trykke på "d" igen.

Nogle vigtige take-away til denne funktion er brugen af "flag" boolean, der hæves i det øjeblik brugeren trykker på knappen d. Dette fanger baggrunden og giver os mulighed for at fjerne den fra den video, der streames af funktionen. Vi sigter mod at gemme baggrundsbilledet i ref_img, så vi kan skelne det fra forgrundsbilledet, som fanger ethvert objekt i bevægelse. Vi bruger funktionen cv2.subtract () til at fratrække forgrundbilledet fra baggrundsbilledet og omvendt og derefter fjerne alle små forskelle i de to billeder umiddelbart efter. Baggrunden er sort.

Fgmasken laves ved hjælp af forskellen mellem disse to billeder og anvendes derefter på funktionerne videostrøm ved hjælp af funktionen OpenCV cv2.bitwise_and ().

Trin 3: VideoEdges -funktion

VideoEdges -funktion
VideoEdges -funktion
VideoEdges -funktion
VideoEdges -funktion

Denne funktion returnerer vores live -videostream, men de påviselige kanter gøres hvide, mens alt andet er mørklagt. Det, der adskiller denne funktion fra de andre funktioner, er konverteringen af vores originale video fra RBG-format til HSV, der står for farvetone, mætning og variation- en anden metode til behandling af lys og farve fra en video. Med denne metode kan vi lettere skelne konturer i videoen ved at anvende et filter (rød_låg til rød_høj).

Canny Edge Detection bruges til at registrere kanterne i et billede. Det accepterer et gråtonebillede som input, og det bruger en multistage -algoritme.

Trin 4: VideoBlur -funktion

VideoBlur -funktion
VideoBlur -funktion
VideoBlur -funktion
VideoBlur -funktion

Denne funktion bruges til at tilføje en sløringseffekt til vores videostream. Funktionen kalder simpelthen GaussianBlur cv2 -funktionen på vores ramme. Yderligere oplysninger om gaussianBlur -funktionen findes her:

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

Trin 5: Forbedringer

Den mest følsomme funktion i dette projekt er funktionen til fjernelse af baggrund, da det kræver brug af et kamera, der ikke har lysjusteringsfunktion. Der kan være et bedre sæt funktioner i OpenCV -biblioteket, der kan stå for denne belysningsjustering og problemfrit fjerne baggrunden (ligner en grøn skærm).

Vi kunne også bruge andre ansigtsdetekteringsfunktioner, der kan producere objekter med mere funktionalitet end blot at returnere (x, y) koordinater. Måske ville et ansigtsgenkendelsesprogram med evnen til at huske ansigter ikke være for svært at implementere.

Sløringsfunktionen kan gøres mere tilpasset via intuitiv kontrol af brugeren. For eksempel kan brugeren ønsker at justere intensiteten af sløringseffekten eller vælge et bestemt område inden for rammen for at sløre.

Anbefalede: