TypeError:' NoneType'和Python中的cv2.error

时间:2018-06-11 09:29:59

标签: python opencv

在回答我的问题之前,我知道这是一个非常常见的问题,但根据代码,可能有多种解决方案,所以如果有人能帮助我,我会非常感激。

我对Python和ML一般都很陌生。因此,在运行我的create_gesture.py文件时,我收到NoneType错误。 我的代码:

create_folder("gestures/" + str(g_id))
pic_no = 0
flag_start_capturing = False
frames = 0

while True:
    img = cam.read()[1]
    img = cv2.flip(img, 1)
    imgCrop = img[y:y + h, x:x + w]
    imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    dst = cv2.calcBackProject([imgHSV], [0, 1], hist, [0, 180, 0, 256], 1)
    disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10))
    cv2.filter2D(dst, -1, disc, dst)
    blur = cv2.GaussianBlur(dst, (11, 11), 0)
    blur = cv2.medianBlur(blur, 15)
    thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
    thresh = cv2.merge((thresh, thresh, thresh))
    thresh = cv2.cvtColor(thresh, cv2.COLOR_BGR2GRAY)
    thresh = thresh[y:y + h, x:x + w]
    contours = cv2.findContours(thresh.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)[1]

我收到此错误:

Traceback (most recent call last):
  File "create_gestures.py", line 120, in <module>
    store_images(g_id)
  File "create_gestures.py", line 70, in store_images
    imgCrop = img[y:y + h, x:x + w]
TypeError: 'NoneType' object is not subscriptable

编辑

计算出行

中的整数值
img = cam.read()[1]    

抛出错误。应该是0而不是1.但是现在我得到了一个不同的错误:

Traceback (most recent call last):
File "create_gestures.py", line 121, in <module>
store_images(g_id)
File "create_gestures.py", line 72, in store_images
imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.error: OpenCV(3.4.1) D:\Build\OpenCV\opencv 3.4.1\modules\imgproc\src\color.cpp:11109: error: (-215) depth == 0 || depth == 2 || depth == 5 in function cv::cvtColor

2 个答案:

答案 0 :(得分:0)

NoneType表示您认为自己正在使用的任何类或对象的实例,而不是实际上没有。这通常意味着上面的赋值或函数调用失败或返回意外结果。

答案 1 :(得分:0)

在此代码行之后检查变量img中的内容:img = cam.read()[1]。您的cam.read()[1]可能会返回None,您应该在继续之前检查该行代码是否正常。