“非类型”对象不可下标

2024-10-02 12:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

获取代码中下面的错误

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)

Tags: 代码cropimgobjectis错误linenot
1条回答
网友
1楼 · 发布于 2024-10-02 12:31:17

您不会显示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上运行得很好,但我必须在第一次尝试时授予终端使用相机的权限。您是否尝试重新启动您的终端应用程序?您的程序可以访问摄像头吗

相关问题 更多 >

    热门问题