python - 按每个图像的平均像素值对图像列表进行排序
问题描述
我有一个灰度枕头图像列表。我想根据每个图像的平均像素值对该列表进行排序。
我最近的尝试如下:
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
我做错了什么?
解决方案
谢谢大家。答案是我的一个简单错误 - #Vishal Kumar Sahu 强调 - type() 方法的存在将使我的调试更加容易:)
尽管我的变量名称很长,但我仍然设法传递一个字符串而不是图像对象列表。
推荐阅读
- excel - 在 VBA 函数中返回集合时属性分配无效
- mysql - 使用数据透视表关系提高大型数据集的性能(使用 Laravel)
- flutter - 颤振没有拿起firebase注销
- instagram - 如何从网站发布 Instagram 直接消息?
- bash - 如何调试损坏的通配符扩展?
- bash - 从文件中复制文件夹,但文件中的子文件夹除外
- android - 如何在 OnRecgonitionListener 方法中从 Android SpeechRecognizer 获取音频文件
- jmeter - 发布数据,其值显示有效响应数据,但来自正则表达式的相同值未在 jmeter 中显示有效响应数据
- javascript - jexcel更新表后我没有得到新值
- python - python - 当数组在python中具有不同的形状时,如何在单个数组中转换数组列表