在python中裁剪图像

2024-05-04 22:56:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着检测出一张脸,然后将它裁剪成一个人脸识别算法。这是我的密码。在

import numpy as np
import cv2
import Image

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

img = cv2.imread('xD.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    print x
    print y
    print w
    print h
    img.crop((x,y,w,h))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

当我打印(x,y,w,h)时,它给出了精确的坐标,但是当我裁剪它时,它会给我这个错误。在

img.crop((x,y,w,h))
AttributeError: 'numpy.ndarray' object has no attribute 'crop'


Tags: cropimportnumpyimgxmlcv2cascadeface
1条回答
网友
1楼 · 发布于 2024-05-04 22:56:02
import numpy as np
import cv2
from PIL import Image

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

img = cv2.imread('xD.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    cropped = img[y:y+h, x:x+w]
cv2.imwrite("thumbnail.png", cropped)
cv2.imshow("cropped", cropped)
cv2.waitKey(0)

相关问题 更多 >