TypeError:不可用类型:' list'如何以相同的顺序将图像放入列表中?

时间:2018-02-07 06:19:59

标签: python numpy

我写在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]···]]。

我认为这些值是列表的嵌套会导致此错误。但我无法理解如何修复这些数据。如何以相同的顺序将图像数据放入列表中?

1 个答案:

答案 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)