'NoneType'对象没有属性'size'-如何使用mtcnn进行面部检测?

问题描述 投票:0回答:1

我正在尝试使用pytorch在神经网络(facenet网络)中实时构建人脸识别,并使用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']

是否有解决此问题的方法?是什么导致此错误?感谢您的建议

python neural-network pytorch face-detection face-recognition
1个回答
0
投票

让我们再次看看该错误。

AttributeError: 'NoneType' object has no attribute 'size'

因此,您(或mtcnn)在代码中的某个位置试图从size变量中调用None属性。您正在使用以下命令将frame传递给mtcnn

 boxes,_ = mtcnn.detect(frame)

这正是您看到该错误的地方。因为您要将None变量传递给mtcnn。为了防止它,可以在调用此方法之前将其阻止。换句话说:

ret, frame = capture.read()
if frame == None:
    continue
© www.soinside.com 2019 - 2024. All rights reserved.