【问题标题】:NoneType' object is not subscriptableNoneType' 对象不可下标
【发布时间】:2020-04-16 01:37:03
【问题描述】:

在代码中得到下面的错误

TypeError: 'NoneType' object is not subscriptable
line : crop_img = img[70:300, 70:300]

谁能帮我解决这个问题?

非常感谢

        img_dofh = cv2.imread("D.png",0)
        ret, img = cap.read()
        cv2.rectangle(img,(60,60),(300,300),(255,255,2),4) #outer most rectangle
        crop_img = img[70:300, 70:300]
        crop_img_2 = img[70:300, 70:300]

        grey = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY)

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    你没有显示你的 img 变量来自哪里。但不知何故,它是None,而不是包含图像数据。

    当您编写一个应该为img 返回有效对象的函数时,通常会发生这种情况,但您忘记在函数中包含return 语句,因此它会自动返回None

    检查创建img的代码。

    更新

    回复您的代码发布:

    如果您能提供minimal, reproducible example,将会很有帮助。这可能看起来像这样:

    import cv2
    cap = cv2.VideoCapture(0)
    if cap.isOpened():
        ret, img = cap.read()
    if img is None:
        print("img was not returned.")
    else:
        crop_img = img[70:300, 70:300]       
        print(crop_img)  # should show an array of image data
    

    查看documentation,当您到达代码中的这一点时,您的相机可能还没有捕捉到任何帧。文档说“如果没有抓取任何帧(相机已断开连接,或者视频文件中没有更多帧),则方法返回 false 并且函数返回 NULL 指针。”我敢打赌.read() 函数会返回一个 NULL 指针,当它被发送回 Python 时会转换为 None

    很遗憾,由于没有其他人拥有您的特定相机设置,其他人可能无法重现您的问题。

    上面的代码在我的 MacBook Pro 上运行良好,但我必须在第一次尝试时授予终端使用相机的权限。您是否尝试过重新启动终端应用程序?您的程序是否可以访问相机?

    【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2015-01-23
    • 2022-01-12
    • 2012-01-13
    相关资源
    最近更新 更多