opencv人脸框往上加30%,往右加%40,往左加%40,往下加40%图片尺寸宽295,高413的尺寸来保存并不要图片变形或扭曲
时间: 2024-04-08 08:35:45 浏览: 67
利用opencv实现人脸检测并保存人脸框图
要将人脸框调整为指定的尺寸(宽度295,高度413),并确保图像不变形或扭曲,您可以按照以下步骤进行操作:
1. 检测人脸并获取人脸框的位置和大小。
2. 根据目标尺寸(宽度295,高度413)计算需要添加的边界值。
3. 根据边界值调整人脸框的位置和大小。
4. 调整人脸框的位置和大小时,确保不超出图像边界。
5. 根据调整后的人脸框裁剪图像。
6. 使用插值方法调整裁剪后的图像大小为目标尺寸。
以下是示例代码,实现上述步骤:
```python
import cv2
# 读取图像
image = cv2.imread('input.jpg')
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 检测人脸
faces = face_cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 遍历每个检测到的人脸
for (x, y, w, h) in faces:
# 计算边界值
padding_top = int(0.3 * h)
padding_bottom = int(0.4 * h)
padding_left = int(0.4 * w)
padding_right = int(0.3 * w)
# 调整人脸框的位置和大小
x -= padding_left
y -= padding_top
w += padding_left + padding_right
h += padding_top + padding_bottom
# 确保不超出图像边界
x = max(0, x)
y = max(0, y)
w = min(w, image.shape[1] - x)
h = min(h, image.shape[0] - y)
# 裁剪图像
cropped_image = image[y:y+h, x:x+w]
# 调整图像大小
resized_image = cv2.resize(cropped_image, (295, 413), interpolation=cv2.INTER_LINEAR)
# 保存调整后的图像
cv2.imwrite('output.jpg', resized_image)
print("调整完成并保存为:output.jpg")
```
请确保在运行代码之前已经安装了OpenCV库,并将`input.jpg`替换为您要处理的图像路径。此代码将在原图像中检测人脸,并根据目标尺寸(宽度295,高度413)计算需要添加的边界值。然后,根据边界值调整人脸框的位置和大小,确保不超出图像边界,并裁剪图像。最后,使用插值方法调整裁剪后的图像大小为目标尺寸,并将调整后的图像保存为`output.jpg`。
请注意,具体的效果可能因图像和人脸检测结果而异。您可以根据需要调整目标尺寸和其他参数以获得最佳效果。
阅读全文