写一个实现人脸图像校正的python代码
时间: 2024-02-07 09:03:59 浏览: 84
以下是一个简单的人脸图像校正的Python代码:
```python
import cv2
import numpy as np
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载图像
img = cv2.imread('input.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 如果检测到人脸,执行以下操作
if len(faces) > 0:
# 选择最大的人脸
max_area_face = faces[0]
for face in faces:
if face[2] * face[3] > max_area_face[2] * max_area_face[3]:
max_area_face = face
# 获取人脸区域
face_cropped = img[max_area_face[1]:max_area_face[1]+max_area_face[3], max_area_face[0]:max_area_face[0]+max_area_face[2]]
# 旋转图像
rows, cols = face_cropped.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1)
rotated_face = cv2.warpAffine(face_cropped, M, (cols, rows))
# 显示旋转后的图像
cv2.imshow('Rotated Face', rotated_face)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print('No face found')
```
在上面的代码中,我们首先加载了一个人脸检测器,然后加载了一张图像。接着,我们将图像转换为灰度图像,并使用人脸检测器检测人脸。如果检测到人脸,我们选择最大的人脸,并获取人脸区域。接着,我们使用OpenCV中的getRotationMatrix2D函数和warpAffine函数来旋转人脸图像。最后,我们显示了旋转后的图像。
阅读全文