Taula de continguts:
- Subministraments
- Pas 1: funció FaceDetect
- Pas 2: Funció BackgroundRemove
- Pas 3: Funció VideoEdges
- Pas 4: Funció VideoBlur
- Pas 5: millores
Vídeo: Projectes bàsics d’OpenCV: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
En aquest projecte, explorem algunes funcionalitats bàsiques d’OpenCV a través de 4 projectes senzills que impliquen un flux de vídeo en directe. Es tracta de reconeixement facial, eliminació de fons, representació visual especial de vores i aplicació d’un efecte de desenfocament al flux de vídeo en directe. El meu propòsit principal per provar aquests projectes era simplement mullar-me els peus amb la interfície OpenCV, ja que penso aprofundir en el camp de la visió per ordinador
Subministraments
- Ordinador que funciona amb Python
- Biblioteca CV oberta, biblioteca Numpy, biblioteca tkinter, biblioteca sys
- Càmera per connectar-se a l'ordinador (si l'ordinador ja no n'inclou cap)
- Fitxer python del programa (inclòs en aquest instructiu)
- fitxer xml haarcascade (inclòs en aquest instructiu)
Pas 1: funció FaceDetect
Aquesta funció mostra el vídeo de la càmera amb quadrats verds a les cares que capta. Al codi, fem servir la funció cv2. VideoCapture () per emmagatzemar el vídeo que capturem en un objecte anomenat "captura". CAPTURE_INDEX és un número definit per l'ordinador que correspon a l'índex de la càmera a la llista d'entrada de vídeo de l'ordinador. Si no teniu una càmera exterior connectada a l'ordinador, hauria de funcionar 0 o 1.
L'objecte face_cascade s'inicialitza mitjançant la funció cascadeClassifier i el fitxer "haarcascade_frontalface_default.xml" que es troba al github d'OpenCV. Utilitzem aquest objecte per emmagatzemar les cares detectades a la llista "cares" com una entrada de quatre vies que conté les cares coordenades x, coordenada y, amplada i alçada. A continuació, dibuixem un rectangle que tanca perfectament la cara mitjançant la funció cv2.rectangle
A partir d’aquest vídeo, OpenCV captura moltes imatges del nostre bucle while mitjançant capture.read () i emmagatzema la imatge en un marc que anomenem "img". Totes les imatges s’interpreten i modifiquen com desitgem. Per a FaceDetect, fem que la imatge sigui grisa mitjançant la funció cvtColor que converteix la imatge que es doni al primer paràmetre a un tipus particular de color d'imatge especificat al segon paràmetre. La llista de valors acceptables per al segon paràmetre es pot trobar en línia. A continuació, mostrem la imatge en una finestra anomenada "Detectar la cara" mitjançant la funció imshow () que pren una cadena per mostrar el nom de la finestra i el marc de la imatge.
Finalment, esperem que l'usuari introdueixi la tecla q mitjançant la funció cv2.waitKey (). La màscara 0xFF s'utilitza com a convenció per a ordinadors de 64 bits. Un cop l'usuari ha finalitzat la transmissió de vídeo, la funció faceDetect allibera l'objecte de captura i després destrueix qualsevol altra finestra oberta sota la interfície OpenCV. Totes les altres funcions segueixen una estructura de disseny similar.
Pas 2: Funció BackgroundRemove
Aquesta funció intenta eliminar la part de fons del nostre vídeo i deixar només la imatge de primer pla. És possible que no funcioni en algunes càmeres, ja que utilitzen una funcionalitat d’ajust d’il·luminació que s’activa quan diferents objectes / focus entren al marc. Si la funció backgroundRemove no funciona, no us preocupeu, només podria ser la vostra càmera.
Per utilitzar aquesta funció, aparteu-vos del marc de la càmera i premeu la tecla "d" per capturar la imatge de fons. És important que no hi hagi objectes en moviment al fons que vulgueu capturar. A continuació, podem retrocedir cap al marc de la càmera. Si la funció funcionava, l'usuari només hauria de veure's al flux de vídeo de la funció. Totes les taques de soroll / negre de la imatge en primer pla poden ser el resultat de l'ajust de la il·luminació de la càmera. Per capturar un altre fons, premeu la tecla "r" per reinicialitzar-lo i torneu a prémer "d".
Alguns mètodes clau per a aquesta funció és l'ús del booleà "flag" que s'aixeca en el moment que l'usuari prem el botó d. Això captura el fons i ens permet eliminar-lo del vídeo que transmet la funció. El nostre objectiu és emmagatzemar la imatge de fons a ref_img per tal de distingir-la de la imatge de primer pla, que captura qualsevol objecte en moviment. Utilitzem la funció cv2.subtract () per restar la imatge de fons de la imatge de fons i viceversa i, a continuació, cancel·larem les minúscules diferències de les dues imatges immediatament després. El fons està enfosquit.
La màscara fg es fa utilitzant la diferència entre aquestes dues imatges i després s'aplica a les funcions de flux de vídeo mitjançant la funció OpenCV cv2.bitwise_and ().
Pas 3: Funció VideoEdges
Aquesta funció retorna un flux de vídeo en directe, però les vores detectables es mostren en blanc mentre la resta queda apagat. El que distingeix aquesta funció de les altres funcions és la conversió del nostre vídeo original del format RBG a HSV, que significa tonalitat, saturació i variació, un mètode diferent de processar la llum i el color d’un vídeo. Amb aquest mètode, podem distingir els esquemes del vídeo més fàcilment aplicant un filtre (red_low a red_high).
Canny Edge Detection s’utilitza per detectar les vores d’una imatge. Accepta una imatge d’escala de grisos com a entrada i utilitza un algorisme de diverses etapes.
Pas 4: Funció VideoBlur
Aquesta funció s'utilitza per afegir un efecte de desenfocament al nostre flux de vídeo. La funció simple crida la funció cv2 de GaussianBlur al nostre marc. Podeu trobar més informació sobre la funció gaussianBlur aquí:
opencv-python-tutroals.readthedocs.io/en/l…
Pas 5: millores
La funció més sensible d’aquest projecte és la funció d’eliminació de fons, ja que requereix l’ús d’una càmera que no tingui funcionalitat d’ajust de la il·luminació. És possible que hi hagi un millor conjunt de funcions a la biblioteca OpenCV que puguin explicar aquest ajust d’il·luminació i eliminar el fons sense problemes (similar a una pantalla verda).
També podríem utilitzar altres funcions de detecció de cares que puguin produir objectes amb més funcionalitats diferents de les coordenades de retorn (x, y). Potser un programa de reconeixement facial amb la capacitat de recordar les cares no seria massa difícil d’implementar.
La funció de desenfocament es pot personalitzar més mitjançant un control intuïtiu per part de l'usuari. Per exemple, és possible que l'usuari vulgui ajustar la intensitat de l'efecte de desenfocament o seleccionar una àrea específica dins del marc per desenfocar.
Recomanat:
Els tres millors projectes electrònics amb transistor D-882: 9 passos
3 millors projectes d’electrònica impressionant que utilitzen el transistor D-882: JLCPCB és l’empresa de prototips de PCB més gran de la Xina i un fabricant d’alta tecnologia especialitzat en prototips de PCB ràpids i producció de PCB de lots petits, amb més de 10 anys d’experiència en fabricació de PCB. Són capaços de proporcionar solucions rendibles
Com fer RADAR amb Arduino per al Projecte Ciència Millors projectes Arduino: 5 passos
Com fer RADAR amb Arduino per al Projecte Ciència Millors projectes d’Arduino: Hola amics, en aquest instructiu us mostraré com fer un sistema de radar increïble construït amb arduino nano. Aquest projecte és ideal per a projectes científics i podeu fer-ho fàcilment amb molt menys inversió i possibilitats
Rebeu notificacions per correu electrònic dels vostres projectes IoT: 6 passos
Rebeu notificacions per correu electrònic dels vostres projectes IoT: notificacions per correu electrònic del programa que connecten els vostres projectes IoT amb Adafruit IO i IFTTT. He publicat alguns projectes IoT. Espero que els hagueu vist, si no, us convido al meu perfil i els comprovo. Volia rebre algunes notificacions quan una variable
Un estupend hack de portàtils tàctils per a projectes Arduino !: 18 passos (amb imatges)
A Cool Laptop Touchpad Hack Hack for Arduino Projects !: Fa un temps, quan estava jugant amb un touchpad PS / 2 amb un microcontrolador Arduino, vaig descobrir que dues de les seves connexions integrades es poden utilitzar com a entrades digitals. En aquest instructiu, aprenem com podem utilitzar un complement de touchpad PS / 2
10 projectes bàsics d'Arduino per a principiants. Feu almenys 15 projectes amb un sol tauler: 6 passos
10 projectes bàsics d'Arduino per a principiants. Feu almenys 15 projectes amb una sola placa !: Arduino Project & Taula de tutoria; Inclou 10 projectes bàsics d’Arduino. Tots els codis font, el fitxer Gerber i molt més. Cap SMD! Soldadura fàcil per a tothom. Components fàcils de desmuntar i reemplaçar. Podeu fer almenys 15 projectes amb un sol bo