以下是Python版OpenCV摄像头人脸实时检测方法的完整攻略,包括两个示例:
Python版OpenCV摄像头人脸实时检测方法
步骤1:导入必要的库
需要导入必要的库,包括cv2和numpy。可以使用以下代码导入这些库:
import cv2
import numpy as np
步骤2:加载人脸检测器
需要加载人脸检测器。可以使用以下代码加载人脸检测器:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
在这个示例中,我们使用cv2.CascadeClassifier()方法加载名为haarcascade_frontalface_default.xml的人脸检测器。
步骤3:打开摄像头
需要打开摄像头。可以使用以下代码打开摄像头:
cap = cv2.VideoCapture(0)
在这个示例中,我们使用cv2.VideoCapture()方法打开摄像头。
步骤4:实时检测人脸
需要实时检测人脸。可以使用以下代码实时检测人脸:
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。
示例1:实时检测人脸
以下是实时检测人脸的示例:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。
示例2:保存检测到的人脸图像
以下是保存检测到的人脸图像的示例:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
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]
cv2.imwrite("face.jpg", roi_color)
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。我们使用cv2.imwrite()方法保存检测到的人脸图像。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python版opencv摄像头人脸实时检测方法 - Python技术站