Hyrje:

Zbulimi i fytyrës është një detyrë themelore në vizionin kompjuterik dhe ka aplikime të shumta, duke filluar nga sistemet e sigurisë deri te realiteti i shtuar. Në këtë postim në blog, ne do të eksplorojmë se si të zbatojmë zbulimin e fytyrës duke përdorur klasifikuesin Haar Cascade me Python dhe OpenCV. Modeli Haar Cascade është një qasje efektive dhe popullore e bazuar në mësimin e makinerive për zbulimin e objekteve në imazhe dhe video.

Unë do t'ju ofroj kodin hap pas hapi për të zbatuar zbulimin e fytyrës duke përdorur klasifikuesin Haar Cascade në Python me OpenCV dhe për të shfaqur fytyrat e zbuluara në një dritare me drejtkëndësha. Ja se si mund ta bëni:

Hapi 1:

Instaloni bibliotekat e nevojshme Sigurohuni që keni të instaluar Python në sistemin tuaj dhe instaloni bibliotekat e nevojshme duke përdorur pip:

pip install opencv-python

Hapi 2:

Importoni Bibliotekat Në skriptin tuaj Python, importoni bibliotekat e kërkuara:

import cv2

Hapi 3:

Ngarkoni modelin Haar Cascade të para-trajnuar: Shkarkoni modelin e Haar Cascade të trajnuar paraprakisht për zbulimin e fytyrës nga depoja OpenCV GitHub ose përdorni lidhjen e mëposhtme: https://github.com/opencv/opencv/tree/master/data/ haarkaskada. Vendosni skedarin XML në të njëjtën direktori me skriptin tuaj Python.

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

Shënim: Kur hapni lidhjen e mësipërme, kërkoni për këtë skedar 'haarcascade_frontalface_default.xml' dhe shkarkoni atë dhe ngarkoni në skriptin tuaj python, në rastin tim skripti im python është Jupyter Notebook.

Hapi 4:

Regjistroni video nga kamera në internet: Nëse dëshironi të zbuloni fytyrat nga një transmetim i drejtpërdrejtë video nga kamera juaj e internetit, mund të përdorni kodin e mëposhtëm. Nëse preferoni të punoni me një imazh, mund ta kaloni këtë hap dhe të ngarkoni drejtpërdrejt një imazh në Hapin 5.

cap = cv2.VideoCapture(0)

Hapi 5:

Përpunoni transmetimin e videos ose ngarkoni një imazh: ose mund të përpunoni transmetimin e videos ose të ngarkoni një imazh dhe ta shndërroni atë në shkallë gri (Haar Cascade funksionon në imazhe në shkallë gri).

Për transmetimin e videos:

while True:
    ret, img = cap.read()
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Për një imazh:

img = cv2.imread('path/to/your/image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Hapi 6:

Kryeni zbulimin e fytyrës Përdorni metodën detectMultiScale për të zbuluar fytyrat në imazh:

faces = face_cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

Hapi 7:

Vizatoni drejtkëndëshat rreth fytyrave të zbuluara dhe shfaqni në një dritare: Hapni fytyrat e zbuluara, vizatoni drejtkëndësha rreth tyre në imazhin origjinal dhe shfaqni imazhin në një dritare:

for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    # Crop the face region and display it in a separate window
    face_roi = img[y:y + h, x:x + w]
    cv2.imshow('Detected Face', face_roi)

cv2.imshow('Face Detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Hapi 8:

Ruaj dhe Ndaj (Opsionale) Nëse dëshironi të ruani imazhin me fytyra të zbuluara, mund të përdorni funksionin cv2.imwrite(). Për të ndarë punën tuaj në LinkedIn, mund të krijoni një postim në blog ose artikull që tregon kodin dhe shpjegon procesin hap pas hapi.

Kjo eshte! Me këto hapa, mund të zbatoni zbulimin e fytyrës duke përdorur klasifikuesin Haar Cascade dhe të shfaqni fytyrat e zbuluara në një dritare me drejtkëndësha. Pavarësisht nëse jeni duke punuar me një transmetim video të drejtpërdrejtë ose një imazh, kodi do t'ju ndihmojë të zbuloni dhe vizualizoni fytyrat brenda videos ose imazhit.

Këtu është i gjithë kodi në një lëvizje për referencën tuaj, thjesht ndiqni këtë kod dhe jeni gati të shkoni. Por mbani mend, ju duhet të ngarkoni modelin tuaj të fytyrës që keni shkarkuar më herët.

import cv2

# Step 2: Load the Pre-trained Haar Cascade Model
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Step 4: Capture Video from Webcam (Optional)
cap = cv2.VideoCapture(0)

# Step 5: Process the Video Stream or Load an Image
while True:
    ret, img = cap.read()
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Step 6: Perform Face Detection
    faces = face_cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # Step 7: Draw Rectangles around Detected Faces and Display in a Window
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
        # Crop the face region and display it in a separate window
        face_roi = img[y:y + h, x:x + w]
        cv2.imshow('Detected Face', face_roi)

    cv2.imshow('Face Detection', img)

    # Exit the loop when 'q' is pressed
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Unë do t'ju sugjeroj që ta kryeni këtë projekt një nga një, një nga një të bëni pjesën e kodimit dhe t'i ekzekutoni këto kode një nga një dhe jo të gjithë menjëherë.