为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我会收到此错误?'NoneType'对象在opencv中没有属性'shape'

为什么我会收到此错误?'NoneType'对象在opencv中没有属性'shape'

天涯尽头无女友 2023-09-02 16:22:31
我正在研究实时服装检测。所以我从 GitHub 借用了这样的代码: https: //github.com/rajkbharali/Real-time-clothes-detection 但是(H, W) = frame.shape[:2]:最后一行出现以下错误。我应该在哪里修复它?from time import sleepimport cv2 as cvimport argparseimport sysimport numpy as npimport os.pathfrom glob import globimport imutilsfrom imutils.video import WebcamVideoStreamfrom imutils.video import FPSfrom google.colab import drivedrive.mount('/content/drive')%cd /content/drive/My Drive/experiment/Yolo_mark-master/x64/Release/Labels = []classesFile1 = "data/obj.names";with open(classesFile1, 'rt') as f:    Labels = f.read().rstrip('\n').split('\n')np.random.seed(42)COLORS = np.random.randint(0, 255, size=(len(Labels), 3), dtype="uint8")weightsPath = "obj_4000.weights"configPath = "obj.cfg"net1 = cv.dnn.readNetFromDarknet(configPath, weightsPath)net1.setPreferableBackend(cv.dnn.DNN_BACKEND_OPENCV)net1.setPreferableTarget(cv.dnn.DNN_TARGET_CPU)image = WebcamVideoStream(src=0).start()fps = FPS().start()#'/home/raj/Documents/yolov3-Helmet-Detection-master/safety.mp4'#while fps._numFrames<100:while True:#for fn in glob('images/*.jpg'):    frame = image.read()    #frame = imutils.resize(frame,width=500)    (H, W) = frame.shape[:2]
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

您的错误背后的原因是框架是None(Null). 有时,从网络摄像头捕获的第一帧是“无”,主要是因为 (1)网络摄像头尚未准备好(并且需要一些额外的时间才能准备好)或者(2)操作系统不允许您的代码访问网络摄像头。


在第一种情况下,在对框架执行任何操作之前,您需要检查框架是否有效:


while True:

 

    frame = image.read()

    if frame is not None:  # add this line

       

      (H, W) = frame.shape[:2]

在其他情况下,您需要检查操作系统中的相机设置。


此外,为了捕获网络摄像头帧,还有另一种基于Opencv 中的VideoCapure类的方法,该方法可能更容易调试。



查看完整回答
反对 回复 2023-09-02
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信