python - typeError: 'NoneType' 对象没有属性 '__getitem__' python

标签 python numpy opencv typeerror

我是 OpenCV 的新手,试图自学我运行这个代码形式的教程:

img=cv2.imread('whatever.jpg')  
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
edges=cv2.Canny(gray,50,150,apertureSize=3)  
lines=cv2.HoughLines(gray,1,np.pi/180,200)  
for rho,theta in lines[0]:  
    a=np.cos(theta)  
    b=np.sin(theta)  
    x0=a*rho  
    y0=b*rho  
    x1=int(x0+1000*(-b))  
    y1=int(y0+1000*(a))  
    x2=int(x0-1000*(-b))
    y2=int(y0-1000*(a))  
    cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imwrite('somthing.jpg',img)

我得到这个错误:

Traceback (most recent call last):  
File "nothing", line 8, in <module>  
for rho,theta in lines[0]:  
TypeError: 'NoneType' object has no attribute '__getitem__'  

我在寻找此类问题的答案,但没有得到 lines[0] 部分。
谢谢帮助

最佳答案

cv2 库函数并不总是返回值。您应该检查返回值,

img=cv2.imread('whatever.jpg')  
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
edges=cv2.Canny(gray,50,150,apertureSize=3)  
lines=cv2.HoughLines(gray,1,np.pi/180,200) 

并且您应该添加 try-catch 行。如果你给出同样的错误,试试这个。

img=cv2.imread(os.path.join(filePath,'image1.png'))

关于python - typeError: 'NoneType' 对象没有属性 '__getitem__' python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47051079/

相关文章:

Python:TypeError:最多输入 1 个参数,得到 5 个

python - 在Python中解析包含XML的ASCII文本文件

python - 如何在 numpy 数组中找到唯一的非 nan 值?

python-3.x - OpenCV 掩码结果

python - 尝试创建一个奇偶函数

python - mod_wsgi : ImportError: No module named 'encodings'

python - 跨数组求和模式

python - 以数组形式打开图像

php - 将 OpenCV 与 php 连接起来

python - 打开简历流YouTube视频