49264


pythonについて独学している者です。  
この度python 3.6.6を使用中に調べても類例や解決法がわからないエラーが発生したので知恵をお借りしたいです。

エラー箇所

[code]

    Traceback (most recent call last):
      File "SQEAmain.py", line 157, in <module>
        img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
    cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
    
[/code]

環境  
Windows10  
Python 3.6.6

以下エラー部分のコードです。

[code]

    if __name__ == '__main__':
        # ファイルを開く
        f = open(FLAGS.train, 'r')
        # データを入れる配列
        train_image = []
        train_label = []
        for line in f:
            # 改行を除いてスペース区切りにする
            line = line.rstrip()
            l = line.split()
            # データを読み込んで28x28に縮小
            img = cv2.imread(l[0])
            img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
            # 一列にした後、0-1のfloat値にする
            train_image.append(img.flatten().astype(np.float32)/255.0)
            # ラベルを1-of-k方式で用意する
            tmp = np.zeros(NUM_CLASSES)
            tmp[int(l[1])] = 1
            train_label.append(tmp)
        # numpy形式に変換
        train_image = np.asarray(train_image)
        train_label = np.asarray(train_label)
        f.close()
    
[/code]

初心者なもので恐縮ですが詳しいご解答を頂けると幸いです。

追記

[code]

    ./data/train/cats/cat0.jpg
    (500, 357, 3)
    
    中略
    
    ./data/train/dogs/dog22.jpg
    (794, 1000, 3)
    ./data/train/dogs/dog23.jpg
    Traceback (most recent call last):
      File "main.py", line 174, in <module>
        print(img.shape)
    AttributeError: 'NoneType' object has no attribute 'shape'
    
[/code]

※こちらの質問は解決しました。  
Yasuhiroさんの仰る通り、画像の拡張子の問題でした。  
ご協力に感謝致します。


CC BY-SA 4.0
2018-10-14T06:53:58.630
49260
2018-10-15T07:42:29.683
2018-10-15T07:42:29.683
30512
30512
question
python opencv
python3.6.6にてcv2エラーが発生します


エラーメッセージ`error: (-215:Assertion failed) !ssize.empty() in function
'cv::resize'`から判断すると、画像`img`を読み込むのに失敗していると思われます。

それを確認するために、以下のように`print`文を追加して変数の値がどうなっているか出力してみてください。

[code]

    import os
    
    中略
    
    if __name__ == '__main__':
    # カレントディレクトリを取得
    print(os.getcwd())
    f = open(FLAGS.train, 'r')
    train_image = []
    train_label = []
    
    for line in f:
        line = line.rstrip()
        l = line.split()
        # l[0]の確認
        print(l[0])
        img = cv2.imread(l[0])
        # imgのサイズの確認
        print(img.shape)
    
        以下略
    
[/code]

今回は画像`dog23`が他の画像と同じ`jpg`ではなく`png`だったためそれが読み込まれていなかったためです。`FLAGS.train`の該当部分を`jpg`から`png`に修正すると動作すると思います。

今回のようなエラーは、デバッガーを使うか、printで関係する変数を出力して調べないとわからないです。


CC BY-SA 4.0
2018-10-14T09:05:20.510
49264
2018-10-15T07:32:53.880
2018-10-15T07:32:53.880
15171
15171
49260
answer