Что требуется, пожалуйста: код обрезает лица по порядку сверху вниз до тех пор, пока он достигает последнего лица.
Поместите код в папку с именем (Входные изображения), содержащую изображение, содержащее собранные лица.
И создайте папку с именем Выходные изображения, в которой будут храниться обрезанные лица.
С помощью XML-файла распознавания лиц с текстом haarcascade_frontalface_default.xml
Код:< /p>
Код: Выделить всё
import os
import cv2
import numpy as np
import os, os.path
# Load the cascade classifier
#download this here https://raw.githubusercontent.com/opencv/opencv/4.x/data/haarcascades/haarcascade_frontalface_default.xml just go there and ctrl + s
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
#rename a file
#for dirname in os.listdir("."):
# if os.path.isdir(dirname):
# for i, filename in enumerate(os.listdir(dirname)):
# os.rename(dirname + "/" + filename, dirname + "/" + str(i) + ".jpg")
# Read the input image
img = cv2.imread("Input Images/image.jpg")
#let's double the size of our image
img_double=cv2.resize(img,None,fx=1,fy=1,interpolation=cv2.INTER_CUBIC)
# let's do the resizing by exact dimensions
image_resize=cv2.resize(img,(600,700),interpolation=cv2.INTER_AREA)
# Convert into grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detect faces
faces = face_cascade.detectMultiScale( gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(150, 150), )
# loop over all detected faces
if len(faces) > 0:
for i, (x,y,w,h) in enumerate(faces):
#face = img[y:y+h, x:x+w]
face = img[y-65:y+h+40,x-40:x+w+55]
# cv2.imshow(f"Cropped Face {i}", face)
cv2.imwrite("Output Images/" f'0{i}.jpg', face)
print(f"0{i}.jpg is saved")
# concatenate image Vertically
#Verti = np.concatenate((img, img), axis=0)
# Number of all detected faces
print("[INFO] Found {0} Faces.".format(len(faces)))
# display the image with detected faces
cv2.imshow('scaling_exact',image_resize)
cv2.waitKey(0)
cv2.destroyAllWindows()
иллюстративный пример
Что требуется, пожалуйста: чтобы код обрезал лица по порядку сверху вниз пока не достигнет последней грани.
пример
[Исходное изображение]
(https://i.sstatic.net/mdTMAMpD.jpg)
Подробнее здесь: https://stackoverflow.com/questions/789 ... t-randomly