我如何在opencv中捕获检测到的面部图像来制作数据库?
How can i captured detected images of face in opencv to make a database?
我正在尝试在opencv 中注册用户的面部以进行面部识别。我已经完成了检测部分,但我想要实现的是保存检测到的 faces.So 基本上我想要实现的是:
当我在网络摄像头中看到时,它会自动捕捉 20-30 或 n 没有图像并将其保存在本地。
目前我正在尝试在单击某个键时简单地保存 1 张图像,程序运行正常但没有任何保存 locally.Here 是代码
import cv2
import os
cascade = cv2.CascadeClassifier("../haar-cascade-files-master/haar-cascade-files-master/haarcascade_frontalface_alt2.xml")
cap = cv2.VideoCapture(0)
while True:
ret,frame = cap.read(0)
# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = cascade.detectMultiScale(frame,1.1,5)
orig = frame.copy()
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
cv2.imshow("Video ",frame)
if cv2.waitKey(2) & 0xFF == 27:
break
elif cv2.waitKey(2) & 0xFF == ord('s'):
faceimg=frame[y:y+h,x:x+w]
cv2.imwrite("../images/facec.jpeg",faceimg)
# cv2.imshow("Crop Image",faceimg)
cap.release()
cv2.destroyAllWindows()
所以代码有什么问题,如何自动保存 n 个图像。
如果在给定场景中只有一个人在看相机,您可以使用计数器。
N = 20
cnt = 0
while True:
...
...
# If the frame contains only one face
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
faceimg=frame[y:y+h,x:x+w]
cv2.imwrite("../images/face_"+str(cnt)+".jpeg",faceimg)
cnt = cnt + 1
if cnt == N:
cnt = 0
...
...
我正在尝试在opencv 中注册用户的面部以进行面部识别。我已经完成了检测部分,但我想要实现的是保存检测到的 faces.So 基本上我想要实现的是: 当我在网络摄像头中看到时,它会自动捕捉 20-30 或 n 没有图像并将其保存在本地。
目前我正在尝试在单击某个键时简单地保存 1 张图像,程序运行正常但没有任何保存 locally.Here 是代码
import cv2
import os
cascade = cv2.CascadeClassifier("../haar-cascade-files-master/haar-cascade-files-master/haarcascade_frontalface_alt2.xml")
cap = cv2.VideoCapture(0)
while True:
ret,frame = cap.read(0)
# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = cascade.detectMultiScale(frame,1.1,5)
orig = frame.copy()
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
cv2.imshow("Video ",frame)
if cv2.waitKey(2) & 0xFF == 27:
break
elif cv2.waitKey(2) & 0xFF == ord('s'):
faceimg=frame[y:y+h,x:x+w]
cv2.imwrite("../images/facec.jpeg",faceimg)
# cv2.imshow("Crop Image",faceimg)
cap.release()
cv2.destroyAllWindows()
所以代码有什么问题,如何自动保存 n 个图像。
如果在给定场景中只有一个人在看相机,您可以使用计数器。
N = 20
cnt = 0
while True:
...
...
# If the frame contains only one face
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),4)
faceimg=frame[y:y+h,x:x+w]
cv2.imwrite("../images/face_"+str(cnt)+".jpeg",faceimg)
cnt = cnt + 1
if cnt == N:
cnt = 0
...
...