python - NoneType' 对象不可下标
问题描述
在代码中得到下面的错误
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)
解决方案
你没有显示你的img
变量来自哪里。但不知何故,它None
不是包含图像数据。
当您编写一个应该返回有效对象的函数时,通常会发生这种情况img
,但您忘记return
在函数中包含一条语句,因此它会自动返回None
。
检查创建img
.
更新
回复您的代码发布:
如果您能提供一个最小的、可重现的示例,那将会很有帮助。这可能看起来像这样:
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
查看文档,当您到达代码中的这一点时,您的相机可能还没有抓取任何帧。文档说“如果没有抓取任何帧(相机已断开连接,或者视频文件中没有更多帧),则方法返回 false 并且函数返回 NULL 指针。” 我敢打赌,该.read()
函数正在返回一个 NULL 指针,该指针None
在它被发送回 Python 时被转换。
不幸的是,由于没有其他人拥有您的特定相机设置,其他人可能无法重现您的问题。
上面的代码在我的 MacBook Pro 上运行良好,但我必须在第一次尝试时授予终端使用相机的权限。您是否尝试过重新启动终端应用程序?您的程序是否可以访问相机?
推荐阅读
- python - 本地文件的 Python ModuleNotFoundError
- react-native - 底部导航栏的一半在 Android 中隐藏,但在 iOS 中不隐藏(React-Native)
- android - 使用 ShapeAppearance 实现菱形按钮,而不是 Drawable
- python - ebay sdk 连接不上
- python - 人口普查 Goecoding 问题
- blazor - 子组件列表的 Blazor 验证
- c# - .NET Framework 4.0 替代 Microsoft.AspNet.WebApi.OwinSelfHost
- r - 使用关卡和标签 - 如何维护关卡中未包含的数据?
- r - 基于另一个 df 的两列对来自一个 df 的值求和
- docker - 在本地通过 docker 设置 hello world of collabora/code