def crop (img_path):
img = cv.imread(img_path)
img_crop = img[60:140,0:320,:]
for a in labels:
cv.imwrite(path_save+a, img_crop)
当我运行这段代码时,它表明:
TypeError: 'NoneType' object is not subscriptable
。
答案 0 :(得分:0)
这是试图下标变量img_crop
的行:
img_crop = img[60:140,0:320,:]
因此,在循环中的某个时刻,cv.imread(img_path)
返回None。一个简单的布尔if
语句将跳过错误:
def crop (img_path):
img = cv.imread(img_path)
if img:
img_crop = img[60:140,0:320,:]
for a in labels:
cv.imwrite(path_save+a, img_crop)
答案 1 :(得分:0)
您应该仔细检查打开的图像是否确实存在。从您与我们共享的代码来看,cv.imread(img_path)
似乎返回None,然后当您尝试通过索引访问None
的内容时,在下一行中引发了错误。
因此,我的建议是如下更新代码:
def crop (img_path):
img = cv.imread(img_path)
if img is None:
# todo handle bad/nonexisting img case
pass
img_crop = img[60:140,0:320,:]
for a in labels:
cv.imwrite(path_save+a, img_crop)
或者让您确保在调用此函数的代码中,您在此处传递的路径始终正确。