我试图在神经网络(Facenet)中建立实时人脸识别(Facenet),使用py手电筒进行人脸识别,用MTCNN进行人脸检测--我尝试过实时检测人脸(从网络摄像头),但不工作读取帧,然后通过mtcnn检测器进行检测。
import cv2
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
frames_tracked = []
print('\rTracking frame: {}'.format(i + 1), end='')
boxes,_ = mtcnn.detect(frame)
frame_draw = frame.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()
但是它会产生这样的错误:
这是整个回溯式http://dpaste.com/0HR58RQ
AttributeError:'NoneType‘对象没有属性'size’
这个问题有解决办法吗?是什么导致了这个错误?谢谢你的建议
发布于 2020-01-28 14:16:32
让我们再看看这个错误。
AttributeError: 'NoneType' object has no attribute 'size'
因此,在代码中的某个地方,您(或mtcnn)试图从一个size
变量调用None
属性。使用以下命令将frame
传递给mtcnn
:
boxes,_ = mtcnn.detect(frame)
这正是你看到错误的地方。因为您要向mtcnn
传递一个None变量。为了防止这种情况,可以在调用此方法之前阻止它。换言之:
ret, frame = capture.read()
if frame == None:
continue
https://stackoverflow.com/questions/59950464
复制相似问题