我写在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:不可用类型:' list'错误
发生。 Traceback说Traceback(最近的呼叫最后一次):
文件" views.py",第33行,in index_list = sorted(set(index_list),key = index_list.index)。 在#1节目中打印(类型(img)),在#2节目中打印(类型(img))。 #2中的img of print(type(img))有[[[255,255,255],[255,255,255],[255,255,255]···]]。
我认为这些值是列表的嵌套会导致此错误。但我无法理解如何修复这些数据。如何以相同的顺序将图像数据放入列表中?
答案 0 :(得分:0)
您的问题在于: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)