我写了 views.py
import os
import cv2
from pathlib import Path
path1 = Path(__file__).parent
path1 /= "../test1"
path2 = Path(__file__).parent
path2 /= "../test2"
index_list =[]
for i in path1.iterdir():
i = str(i)
if i.split(".")[-1].lower() in {"jpeg", "jpg", "png"}:
img = cv2.imread(i)
print(type(img)) #1
img = img.tolist()
print(type(img)) #2
if img is None:
print("Couldn't open file %s" % i)
else:
index_list.append(img)
index_list = sorted(set(index_list), key=index_list.index)
test1
和test2
文件夹中有图片。
当我运行这些代码时,
TypeError:无法散列的类型:“列表”错误
发生。Traceback表示Traceback(最近一次通话是最后一次):
在index_list = sorted(set(index_list),key = index_list.index)中的文件“ views.py”的第33行。#1中的print(type(img))显示,#2中的print(type(img))显示。#2中的print(type(img))的img具有[[[255,255,255],[255,255,255],[255,255,255] ・ ・ ・]]。
我认为这些值是列表的嵌套会导致此错误。但是我不明白如何修复这些数据。如何以相同顺序将图像数据放入列表中?
您的问题在这里:index_list = sorted(set(index_list), key=index_list.index)
。您不能在列表列表上使用set,因为列表不可散列。
相反,请尝试以下操作: index_list = sorted(set([tuple([tuple(r) for r in e]) for e in index_list]), key=index_list.index)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句