web-dev-qa-db-ja.com

アサーションエラー:関数imshowのsize.width> 0 && size.height> 0

私はopencv2とpythonを使用しています。私はpythonとopencvで新しいです。jpegイメージを読み取って、それが示すイメージを表示しようとしました。次のエラー:

/home/pi/opencv-2.4.9/modules/highgui/src/window.cpp:269: \
  error: (-215) size.width>0 &&  size.height>0 in function imshow.

そしてコードは:

import cv2
# windows to display image
cv2.namedWindow("Image")
# read image
image = cv2.imread('home/pi/bibek/book/test_set/bbb.jpeg')
# show image
cv2.imshow("Image", image)
# exit at closing of window
cv2.waitKey(0)
cv2.destroyAllWindows()
10
Bibek Ghimire

画像の読み込みに失敗します(おそらく、パスの先頭の/を忘れたためです)。 imreadはNoneを返します。 Noneimshowに渡すと、サイズ0x0のウィンドウを作成しようとして失敗します。

cvの不十分なエラー処理は、C++実装のラッパーレイヤーが非常に薄いためと思われます(エラー時にNULLを返すのが一般的です)。

12
Krumelur

Rpi 3でRaspbianを使用しているときに、qrcodeを読み取ろうとしたときに同じ問題が発生しました。エラーは、cv2が画像を読み取れなかったことが原因です。 png画像を使用する場合は、pypngモジュールをインストールしてください。

Sudo pip install pypng
4

それは問題を引き起こしているパスです、私は同じ問題を抱えていましたが、画像の完全なパスを与えたとき、それは完全に機能していました。

3
Malware_656

私の場合、ターミナルの作業ディレクトリをcode + testImageの作業ディレクトリに変更するのを忘れていました。したがって、そこに画像を見つけることができませんでした。

最後に、これは私のために働いたものです:

画像とデスクトップにPythonファイルを保存しました。cmdディレクトリをそれに変更しました。

cd Desktop

そして、私のファイルをチェックしました:

ls

そしてこれは私のコードでした:

import cv2
import numpy as np

im = cv2.imread('unnamed.jpg')
#Display the image
cv2.imshow('im',im)
cv2.waitKey(2000) #Milliseconds
1
Pe Dro

このエラーの原因の1つは、指定されたパスにファイルがない場合です。したがって、次のようなパスを確認することをお勧めします(Linuxベースのマシンを使用している場合)。

ls <path-provided-in-imread-function>

パスが正しくない場合、またはファイルが欠落している場合は、エラーが発生します。

0
Rahul Singal