Innehållsförteckning:

OpenCV Basic Projects: 5 steg
OpenCV Basic Projects: 5 steg

Video: OpenCV Basic Projects: 5 steg

Video: OpenCV Basic Projects: 5 steg
Video: TOP 10 OPENCV PROJECTS in 2020 2024, Juli
Anonim
OpenCV Basic Projects
OpenCV Basic Projects

I detta projekt utforskar vi några grundläggande OpenCV -funktioner genom fyra enkla projekt som involverar en live videoström. Dessa är ansiktsigenkänning, borttagning av bakgrund, speciell visuell återgivning av kanter och applicering av en suddig effekt på livevideoströmmen. Mitt huvudsakliga syfte med att prova dessa projekt var att helt enkelt bli våt med fötterna med OpenCV -gränssnittet, eftersom jag planerar att fördjupa mig mer inom datorsyn

Tillbehör

  • Dator som kör Python
  • Öppet CV -bibliotek, Numpy -bibliotek, tkinter -bibliotek, sys -bibliotek
  • Kamera för anslutning till dator (om datorn inte redan innehåller en)
  • Programmets pythonfil (ingår i denna instruerbara)
  • haarcascade xml -fil (ingår i denna instruerbara)

Steg 1: FaceDetect -funktion

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

Denna funktion visar kamerans video med gröna rutor på alla ansikten den tar upp. I koden använder vi funktionen cv2. VideoCapture () för att lagra videon som vi fångar i ett objekt som heter "capture". CAPTURE_INDEX är ett tal som din dator har angett som motsvarar indexet för din kamera i datorns videoinmatningslista. Om du inte har en yttre kamera ansluten till din dator bör 0 eller 1 fungera.

Face_cascade -objektet initieras med funktionen cascadeClassifier och filen "haarcascade_frontalface_default.xml" som finns i OpenCV -github. Vi använder detta objekt för att lagra de ansikten som upptäcks i listan "ansikten" som en inmatning fyrvägstubel som håller ansikten x-koordinat, y-koordinat, bredd och höjd. Vi ritar sedan en rektangel som omsluter ansiktet perfekt med funktionen cv2.rectangle

Från den här videon tar OpenCV många bilder i vår loop medan vi använder capture.read () och lagrar bilden i en ram som vi kallade "img". Varje bild tolkas och ändras sedan som vi vill. För faceDetect gör vi bilden grå med hjälp av cvtColor -funktionen som konverterar vilken bild som ges i den första parametern till en viss typ av bildfärg som anges i den andra parametern. Listan över acceptabla värden för den andra parametern finns online. Vi visar sedan bilden i ett fönster med namnet "Detecting the face" med hjälp av funktionen imshow () som tar en sträng för fönsternamnet och bildramen som ska visas.

Slutligen väntar vi på att användaren anger tangenten q med funktionen cv2.waitKey (). 0xFF -masken används som en konvention för 64 -bitars datorer. När användaren har avslutat videoströmmen frigör faceDetect -funktionen inspelningsobjektet och förstör sedan alla andra fönster som öppnas under OpenCV -gränssnittet. Alla andra funktioner följer en liknande designstruktur.

Steg 2: Bakgrund Ta bort funktion

Bakgrund Ta bort funktion
Bakgrund Ta bort funktion
Bakgrund Ta bort funktion
Bakgrund Ta bort funktion

Denna funktion försöker ta bort bakgrundsdelen av vår video och lämna endast förgrundsbilden. Det fungerar kanske inte på vissa kameror, eftersom de använder en ljusjusteringsfunktion som aktiveras när olika objekt/ fokus kommer in i ramen. Om din bakgrundRemove-funktion inte fungerar, oroa dig inte- det kan bara vara din kamera!

För att använda den här funktionen, gå bort från kameraramen och tryck på "d" -knappen för att fånga bakgrundsbilden. Det är viktigt att det inte finns några rörliga objekt i bakgrunden du vill fånga. Sedan kan vi gå tillbaka till kameraramen. Om funktionen fungerade ska användaren bara se sig själv i funktionens videoström. Brus/svarta fläckar i förgrunden kan vara ett resultat av kamerans ljusjustering. För att fånga en annan bakgrund, tryck på "r" -knappen för att återinitiera och tryck sedan på "d" igen.

Några viktiga saker för denna funktion är användningen av den "flagga" boolean som höjs så fort användaren trycker på d-knappen. Detta fångar bakgrunden och låter oss ta bort den från videon som streamas av funktionen. Vi strävar efter att lagra bakgrundsbilden i ref_img så att vi kan skilja den från förgrunden, som fångar alla rörliga föremål. Vi använder funktionen cv2.subtract () för att subtrahera den förgrunda bilden från bakgrundsbilden och vice versa, för att sedan avbryta alla små skillnader i de två bilderna direkt efter. Bakgrunden är mörk.

Fgmasken görs med hjälp av skillnaden mellan dessa två bilder och appliceras sedan på funktionernas videoström med funktionen OpenCV cv2.bitwise_and ().

Steg 3: VideoEdges -funktion

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

Den här funktionen returnerar en live -videoström, men de detekterbara kanterna görs vita medan allt annat är mörkt. Det som skiljer denna funktion från de andra funktionerna är konverteringen av vår originalvideo från RBG-format till HSV, som står för nyans, mättnad och variation- en annan metod för bearbetning av ljus och färg från en video. Med den här metoden kan vi lättare skilja konturer i videon genom att använda ett filter (red_low till red_high).

Canny Edge Detection används för att upptäcka kanterna i en bild. Den accepterar en gråskalebild som input och den använder en flerstegsalgoritm.

Steg 4: VideoBlur -funktion

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

Denna funktion används för att lägga till en suddig effekt i vår videoström. Funktionen kallar enkelt GaussianBlur cv2 -funktionen på vår ram. Mer information om gaussianBlur -funktionen hittar du här:

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

Steg 5: Förbättringar

Den mest känsliga funktionen i detta projekt är bakgrundsborttagningsfunktionen, eftersom den kräver användning av en kamera som inte har ljusjusteringsfunktion. Det kan finnas en bättre uppsättning funktioner i OpenCV -biblioteket som kan ta hänsyn till denna belysningsjustering och smidigt ta bort bakgrunden (liknande en grön skärm).

Vi kan också använda andra ansiktsdetekteringsfunktioner som kan producera objekt med mer funktionalitet än att bara returnera (x, y) koordinater. Kanske ett ansiktsigenkänningsprogram med förmåga att komma ihåg ansikten inte skulle vara alltför svårt att genomföra.

Oskärpa -funktionen kan göras mer anpassad via intuitiv kontroll av användaren. Till exempel kan användaren vilja justera intensiteten för suddighetseffekten eller välja ett specifikt område inom ramen som ska suddas.

Rekommenderad: