【发布时间】:2020-05-15 01:54:30
【问题描述】:
我试图从我的网络摄像头中检测人脸,但它只检测到出现在第一帧中的第一张人脸,然后它会崩溃,我已经使用 mtcnn 进行检测操作,在检测到第一张人脸后(如果它存在)然后它将停止捕获并粉碎并保留在屏幕上,我使用 jupyter notebook 作为编辑器,笔记本将继续加载..
但不使用mtcnn 检测器也能正常工作!
但是当第一帧中没有人脸时,它会引发这个错误
每当我在for box in boxes: 之前使用if boxes: 时
IndexError: 列表索引超出范围
但如果有一张脸就会引发这个错误:
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
但如果没有要检测的面部,我不会使用if boxes:
它会引发这个错误:
TypeError: 'NoneType' 对象不可迭代
如果在第一帧中检测到人脸,则在检测到人脸后将继续加载!
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
frames_tracked = []
print('\rTracking frame: {}'.format(i + 1), end='')
frame_pil = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
frame_pil = Image.fromarray(frame_pil)
boxes,_ = mtcnn.detect(frame_pil)
frame_draw = frame_pil.copy()
draw = ImageDraw.Draw(frame_draw)
for box in boxes:
draw.rectangle(box.tolist(), outline=(255, 0, 0), width=6)
frames_tracked.append(frame_draw.resize((640, 360), Image.BILINEAR))
d = display.display(frames_tracked[0], display_id=True)
i = 1
try:
while True:
d.update(frames_tracked[i % len(frames_tracked)])
i += 1
except KeyboardInterrupt:
pass
if cv2.waitKey('q') == 27:
break
capture.release()
cv2.destroyAllWindows()
请我完成我最后一年的项目
【问题讨论】:
-
“这是我第二次发布这个问题”...我想说这不是一个好的起点。
-
谢谢你,我更新了,但如果你知道解决方法,请告诉我@Berriel
-
如果有人想知道如何做到这一点,它的回答是:forums.fast.ai/t/…
标签: python opencv neural-network face-detection resnet