我是 OpenCV 的新手,我的图像需要裁剪为完美的护照尺寸照片。我有成千上万的图像需要像这样自动裁剪和拉直。如果图像太模糊且无法裁剪,我需要将其复制到被拒绝的文件夹中。我尝试使用 haar 级联,但这种方法只给了我面子。但我需要一张照片裁剪背景的脸。谁能告诉我如何在 OpenCV 或其他任何代码中编写代码?
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faceCascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.3,
minNeighbors=3,
minSize=(30, 30)
)
if(len(faces) == 1):
for (x, y, w, h) in faces:
if(x-w < 100 and y-h < 100):
ystart = int(y-y*int(y1)/100)
xstart = int(x-x*int(x1)/100)
yend = int(h+h*int(y1)/100)
xend = int(w+w*int(y2)/100)
roi_color = img[ystart:y + yend, xstart:x + xend]
cv2.imwrite(path, roi_color)
else:
rejectedCount += 1
cv2.imwrite(path, img)
Run Code Online (Sandbox Code Playgroud)
前
后