画像ファイルが読み込めず、shapeを取得することができない。
pythonで画像認識のための学習データを準備するために、OpenCVを使って
data/arisu
/aya
/karen
/shino
/youko
のそれぞれフォルダの中にある画像をすべて、短いほうの辺に合わせて正方形にクリッピングし保存するプログラムを書いています。
しかし、これを実行すると、ファイルを探せないのか
height, width = img.shape[:2]
AttribteError: 'NoneType' object has no attribte 'shape'
と出てしまいます。
ファイル・フォルダを取得したfor文を書いたことがなかったため未熟な点もありますが、どなたかわかる方がいたら教えてください。
import os
import cv2
dirs = ['arisu', 'aya', 'karen', 'shino', 'youko']
for i in range(len(dirs)):
d = dirs[i]
files = os.listdir("../data/" + d)
for j in range(len(files)):
f = files[j]
img = cv2.imread("../data/" + d + "/" + f)
height, width = img.shape[:2]
if(height > width): #縦長だった場合
clp = img[0:width, 0:width] #左上からwidthの長さの正方形にクリップ
if(height < width): #横長だった場合
offset = ((width//2)-(height//2)) #左側の余白部分をoffset
clp = img[0:height, offset:offset+height] #offsetの位置からheightの長さの正方形にクリップ
cv2.imwrite("../data/" + d + "/" + f, clp)