繁体   English   中英

我该如何解决这个 TypeError: 'NoneType' object is not subscriptable?

[英]How do i solve this TypeError: 'NoneType' object is not subscriptable?

cap = cv2.VideoCapture(0)
while 1:
    ret,img = cap.read()
    image = cv2.imread('/content/drive/MyDrive/signProject/amer_sign2.png')
    cv2_imshow(image)
    img = cv2.flip(img, 1)
    top, right, bottom, left = 75, 350, 300, 590
    roi = img[top:bottom, right:left]
    roi=cv2.flip(roi,1)
    gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray, (7, 7), 0)
    cv2_imshow(gray)
    alpha=classify(gray)
    cv2.rectangle(img, (left, top), (right, bottom), (0,255,0), 2)
    font=cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,alpha,(0,130),font,5,(0,0,255),2)
    #cv2.resize(img,(1000,1000))
    cv2_imshow(img)
    key = cv2.waitKey(1) & 0xFF
    if key==ord('q'):
        break;
cap.release()
cv2.destroyAllWindows()
--------------------------------------------------------------------------- 
TypeError                                 Traceback (most recent call last) <ipython-input-36-105ee52e9f68> in <module>()
      6     img = cv2.flip(img, 1)
      7     top, right, bottom, left = 75, 350, 300, 590
----> 8     roi = img[top:bottom, right:left]
      9     roi=cv2.flip(roi,1)
     10     gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)

TypeError: 'NoneType' object is not subscriptable

代码

错误

该错误意味着您正在尝试索引无法索引的 object (在本例中为NoneType )。 所以第 8 行中的img似乎是None 这可能是由于ret, img = cap.read()失败。 cap.read()中的第一个返回值(在您的例子中称为ret )指示cap.read()是否成功。 在使用img之前,您应该检查ret是否为True

为什么cap.read()失败了?

它失败的原因可能有几个。 这是我要找出问题原因的方法:

尝试其他指标

我读过几次 OpenCV 中的相机并不总是在索引0处,但也可能在-1或其他一些正索引处。

检查是否安装了FFMPEG编解码器

您需要 FFMPEG 编解码器才能使用 OpenCV 读取视频。您可以使用print(cv2.getBuildInformation())打印 OpenCV 构建信息。 它应该显示一个标记为Video I/O的部分。 在该部分中应该有一个标记为FFMPEG的条目,它是YESNO 如果不是,则需要安装NO和 FFMPEG

验证您的相机是否正常工作

如果您使用的是外置摄像头,请确保它已正确连接并正常工作(例如,将其与其他程序一起使用)。

错误消息意味着,出于某种原因, img等于None ,因此roi = img[top:bottom, right:left]触发错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM