Taula de continguts:

Projectes bàsics d’OpenCV: 5 passos
Projectes bàsics d’OpenCV: 5 passos

Vídeo: Projectes bàsics d’OpenCV: 5 passos

Vídeo: Projectes bàsics d’OpenCV: 5 passos
Vídeo: LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision 2024, Juliol
Anonim
Projectes bàsics d’OpenCV
Projectes bàsics d’OpenCV

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

Funció FaceDetect
Funció FaceDetect
Funció FaceDetect
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

Funció BackgroundRemove
Funció BackgroundRemove
Funció BackgroundRemove
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

Funció VideoEdges
Funció VideoEdges
Funció VideoEdges
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

Funció VideoBlur
Funció VideoBlur
Funció VideoBlur
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: