目的:批量本地讀圖進行語義分割處理
錯誤提示如圖:
搜索出來的結果一般是說Python在迭代的時候需要加 range 但是介於本文已經加了,所以問題不出現在這裏.
根據錯誤提示,發現是在 image.size這兒出問題的,所以應該要敏感地覺察出是輸入圖片有問題,而不是迭代有問題.
可以用下面的輸出指令查看圖像格式.
print(image.dtype)
本文這裏一開始輸出是Unit8,和需求不匹配,所以需要改.(可見,Python讀圖和處理圖時也是需要注意使用的圖像類型的,感覺自己有點愚蠢了...)
image = Image.fromarray(coll[i],mode='RGB')
具體的python中的圖像格式問題,下一篇會轉載查到的別人寫的資料.
所以最終的代碼如下:
#批量local讀取圖片 yyt
data_dir="/mnt/yyt/slam/colmap_data/ColMap/gerrard-hall/images"
str=data_dir + '/*.JPG'
def run_visualization(num,image):
"""Inferences DeepLab model and visualizes result."""
try:
#orignal_im = Image.open(path)
#print('running deeplab on image %s...' % path)
#num = np.str(i)
orignal_im = image
resized_im, seg_map = MODEL.run(orignal_im)
vis_segmentation(num,resized_im, seg_map)
except IOError:
#print('Cannot retrieve image. Please check path: ' + path)
print('Cannot retrieve image.')
return
coll = io.ImageCollection(str)
#print(len(coll))
for i in range(len(coll)):
IMAGE = Image.fromarray(coll[i],mode='RGB')
num = np.str(i)
run_visualization(num,IMAGE)