python opencv摄像头聚焦人脸代码
时间: 2023-07-10 16:36:42 浏览: 55
以下是使用OpenCV库进行人脸检测和聚焦的Python代码示例:
```python
import cv2
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头画面
ret, frame = cap.read()
# 转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 针对每个检测到的人脸进行聚焦处理
for (x, y, w, h) in faces:
# 计算聚焦区域的坐标和大小
focus_x = int(x + w / 2)
focus_y = int(y + h / 2)
focus_size = int(min(w, h) * 1.5)
# 构造聚焦区域的矩形
focus_rect = (focus_x - focus_size // 2, focus_y - focus_size // 2, focus_size, focus_size)
# 生成高斯模糊的图像作为聚焦效果
blurred = cv2.GaussianBlur(frame, (0, 0), focus_size // 30)
mask = np.zeros(frame.shape[:2], dtype=np.uint8)
cv2.circle(mask, (focus_x, focus_y), focus_size // 2, 255, -1, cv2.LINE_AA)
focus = cv2.bitwise_and(blurred, blurred, mask=mask)
# 将聚焦效果与原图像进行叠加
frame[y:y+h, x:x+w] = cv2.addWeighted(focus[y:y+h, x:x+w], 1, frame[y:y+h, x:x+w], 0.7, 0)
# 显示画面
cv2.imshow("Camera", frame)
# 按下 q 键退出
if cv2.waitKey(1) == ord("q"):
break
# 关闭摄像头
cap.release()
cv2.destroyAllWindows()
```
在该代码中,我们使用了OpenCV自带的人脸检测器来检测摄像头画面中的人脸,并对每个检测到的人脸进行聚焦处理。具体实现方式是:首先计算出聚焦区域的坐标和大小,然后利用高斯模糊生成聚焦效果,最后将聚焦效果与原图像进行叠加即可。