我是 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/