

OpenCVでデータの読み込みを読み込みます。しかし、画像を28×28サイズに圧縮する際に次のエラーが出てしまいました。

**エラー内容**

[code]

    OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /build/buildd/opencv-2.4.8+dfsg1/imgproc/src/imgwarp.cpp, line 1824
    Traceback (most recent call last):
      File "train.py", line 136, in <module>
        img = cv2.resize(img, (28,28))
    cv2.error: /build/buildd/opencv-2.4.8+dfsg1/imgproc/src/imgwarp.cpp, line 1824:
    error: (-215) ssize.area() > 0 in function resize
    
[/code]

**コード（長文のためエラーが出る付近のみ抜粋）**

[code]

    conding:utf-8
    import cv2
    （中略）
    if __name__ == '__main__':
        # ファイルを開く
        f = open(FLAGS.train, 'r')  # train.txt
        train_image = []
        train_label = []
        for line in f:
            line = line.rstrip()
            l = line.split()
            img = cv2.imread(l[0])
            **img = cv2.resize(img, (28, 28))** ←エラー発生部位
            train_image.append(img.flatten().astype(np.float32)/255.0)
            tmp = np.zeros(NUM_CLASSES)
            tmp[int(l[1])] = 1
            train_label.append(tmp)
        train_image = np.asarray(train_image)
        train_label = np.asarray(train_label)
        train_len = len(train_image)
        f.close()
    
[/code]

おそらくですが、データが途上で受け渡せていない恐れがあると思います。  
どのような原因が考えられるでしょうか。  
どなたかわかる方いらっしゃいますでしょうか？  
よろしくお願いします。

開発環境  
Ubuntu 14.0.4 LTS  
Python 2.7.6  
OpenCV 2.4.8


CC BY-SA 4.0
2016-11-04T13:18:01.107
30107
2020-12-20T18:47:16.377
2020-12-20T18:47:16.377
3060
19423
question
python opencv python2
Python2.7.6でOpenCV Errorが発生します


エラーメッセージに

[code]

    cv2.error: /build/buildd/opencv-2.4.8+dfsg1/imgproc/src/imgwarp.cpp, line 1824:
    error: (-215) ssize.area() > 0 in function resize
    
[/code]

とあるので，手元にある OpenCV 2.4.9 のソースで確認してみると，

[code]

    CV_Assert( ssize.area() > 0 );
    
[/code]

で失敗しているようです．ssize は入力画像 img のサイズ，  
ssize.area() はその面積なので， **imread() に失敗して img  
のサイズが０になっている**と思われます．

imread() は失敗してもエラーを報告せず，サイズ０の画像を  
返すだけなので，(この場合に限らず) imread() が返した  
画像のサイズが０でないかチェックするようにしてください．

imread() が失敗する原因としては，画像ファイルがオープン  
できない，モード指定の誤りなどがありますが，この場合は  
オープンの失敗だと思われます． **l[0] は期待どおりの値に  
なってますか？**

Python は使ったことがない のでわかりませんが，  
(C/C++ と同様に) Python でも **errno** が使えるようなので，  
これを調べればオープンに失敗した原因はわかるはずです．

errno — 標準の errno システムシンボル(原文)  
<http://docs.python.jp/2/library/errno.html>


CC BY-SA 3.0
2016-11-06T16:26:02.547
30156
2016-11-07T11:16:56.653
2016-11-07T11:16:56.653
19458
19458
30107
answer