【发布时间】:2021-08-15 19:00:40
【问题描述】:
我有一个灰度枕头图像列表。 我想根据每个图像的平均像素值对该列表进行排序。
我最近的尝试如下:
def getTiles(tiles_directory):
files = os.listdir(tiles_directory)
tiles = []
for file in files:
filePath =os.path.abspath(os.path.join(tiles_directory, file))
try:
fp = open(filePath, "rb")
im = Image.open(fp)
im = ImageOps.grayscale(im)
tiles.append(im)
im.load()
fp.close()
except:
print("Invalid tile: %s" % (filePath,))
return (tiles)
input_tiles = getTiles(file_repository)
images_sorted_by_ave_pixel = sorted(
input_tiles, key=lambda x: ImageStat.Stat(x).mean)
但我得到一个错误:
File "StitchMosaic.py", line 351, in generate
sorted_tiles=sortTiles(tiles)
File "StitchMosaic.py", line 50, in sortTiles
byAvePixel = sorted(tiles, key=lambda x: ImageStat.Stat(x).mean)
File "StitchMosaic.py", line 50, in <lambda>
byAvePixel = sorted(tiles, key=lambda x: ImageStat.Stat(x).mean)
File "/Users/stuartfish/opt/anaconda3/lib/python3.8/site-packages/PIL/ImageStat.py", line 39, in __init__
raise TypeError("first argument must be image or list")
TypeError: first argument must be image or list
我做错了什么?
【问题讨论】:
-
你能发布更多你的代码吗?比如你在哪里创建
list_of_images? -
使用
type方法来了解您作为参数传递的内容。 -
另外请粘贴完整的错误堆栈跟踪。
-
return (tiles)-->return tiles -
谢谢大家。 #Vishal Kumar Sahu,我将按照建议使用类型方法。 #balderman 我尝试删除退货声明中的括号,但没有任何区别。这可能是一个非常基本的错误,因为这是我第一次尝试 python。