前提・実現したいこと
https://qiita.com/neriai/items/6a662a49054bc544806d
上記サイトに書かれているような顔分類器を作成しようとしています
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users?????\Anaconda3\envs\opencvtest001\testmain.py", line 198, in <module> img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE)) cv2.error: OpenCV(4.1.2) D:\Build\OpenCV\opencv-4.1.2\modules\imgproc\src\resize.cpp:3720: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
該当のソースコード
python
1if __name__ == '__main__': 2 # ファイルを開く 3 f = open(FLAGS.train, 'r') 4 # データを入れる配列 5 train_image = [] 6 train_label = [] 7 8 for line in f: 9 # 改行を除いてスペース区切りにする 10 line = line.rstrip() 11 l = line.split() 12 13 # データを読み込んで28x28に縮小 14 # img_path = "C:/Users/hogehoge/Desktop/" 15 img = cv2.imread(l[0]) 16 img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE)) 17 18 # 一列にした後、0-1のfloat値にする 19 train_image.append(img.flatten().astype(np.float32)/255.0) 20 21 # ラベルを1-of-k方式で用意する 22 tmp = np.zeros(NUM_CLASSES) 23 tmp[int(l[1])] = 1 24 train_label.append(tmp) 25 26 # numpy形式に変換 27train_image = np.asarray(train_image) 28train_label = np.asarray(train_label) 29f.close() 30
試したこと
path = os.getcwd()
print(path)
で現在のディレクトリを確認したら、
>>> C:\Users?????\Anaconda3\envs\opencvtest001
そして画像の置いてあるディレクトリは
C:\Users?????\Anaconda3\envs\opencvtest001\workspace\dir\train\me と
C:\Users?????\Anaconda3\envs\opencvtest001\workspace\dir\train\others
になります
https://teratail.com/questions/169158 同様に
img = cv2.imread(l[0]) のあとに
print(img)
を試してみた結果、none が帰ってきました
###追記(追加)
コメントにもあるように、3箇所でprint()を実行した結果をみると
以下の結果とエラーが出ました
html
1C:\Users?????\Anaconda3\envs\opencvtest001 2C/Users/?????/Anaconda3/envs/opencvtest001/workspace/dir/train/others/001.jpg 3 4Traceback (most recent call last): 5 File "C:\Users?????\Anaconda3\envs\opencvtest001\testmain.py", line 201, in <module> 6 print(img.shape) 7AttributeError: 'NoneType' object has no attribute 'shape'
パス以外が原因となると、画像のサイズか拡張子が考えられますが
拡張子はすべて.jpgで統一しています。
逆にサイズだと、大きくても640480まで、しかもプログラム中で2828に圧縮されるので関係ないと考えられます。
となるとどこが原因なのか、初心者の自分では思いつかず、どなたかわかる方がいたら教えていただきたいです。
###追記2
img = cv2.imread(l[0])の直前に os.path.exists(l[0]) でパスを確認したところ
C:\Users?????\Anaconda3\envs\opencvtest001
で、実行ファイルが置いてあるところである。
また、imshowで画像が表示できるか試した結果以下のエラーがでました
html
1 img = cv2.imread(l[0]) 2 cv2.imshow("test",img) 3 cv2.waitKey(0) 4 cv2.destroyAllWindows() 5 6------------------------------- 7 発生したエラー 8Traceback (most recent call last): 9 File "C:\Users??????\Anaconda3\envs\opencvtest001\testmain.py", line 202, in <module> 10 cv2.imshow("test",img) 11cv2.error: OpenCV(4.1.2) D:\Build\OpenCV\opencv-4.1.2\modules\highgui\src\window.cpp:384: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow' 12
補足情報(FW/ツールのバージョンなど)
windows 10
python 3.7.4
opencv 4.1.0
opencv-python 4.1.2
tensorflow 2.0.0
回答2件
あなたの回答
tips
プレビュー