web-dev-qa-db-ja.com

エラー:(-215)size.width> 0 && size.height> 0 in関数resize

この行を除くすべてのコードの画像処理分類子を作成しています-

input_img_resize=cv2.resize(input_img,(128,128))

この行は私にエラーを与えます

('error: /io/opencv/modules/imgproc/src/imgwarp.cpp:3483: error: (-215) ssize.width > 0 && ssize.height > 0 in function resize')

私のコード-

PATH = os.getcwd()
# Define data path
data_path = PATH + '/data'
data_dir_list = os.listdir(data_path)

img_rows=128
img_cols=128
num_channel=3
num_Epoch=30

num_classes = 67

img_data_list=[]

for dataset in data_dir_list:
    img_list=os.listdir(data_path+'/'+ dataset)
    print ('Loaded the images of dataset-'+'{}\n'.format(dataset))
    for img in img_list:
        input_img=cv2.imread(data_path + '/'+ dataset + '/'+ img )

        input_img_resize=cv2.resize(input_img,(128,128))
        img_data_list.append(input_img_resize)
4
Deepak Umredkar

さて、明らかにこの行input_img=cv2.imread(data_path + '/'+ dataset + '/'+ img )は空の配列を返します。

読み込む前に、最初に画像が存在するかどうかを確認する必要があります。そして、文字列の組み合わせを使用してファイルパスを結合するのをやめてください。python os.path.joinの方が適しています。

image_path = os.path.join(data_path, dataset, img)
if os.path.exist():
    # Do stuff
9
Vu Gia Truong

これは、1つの画像のためです。

画像を見つけるために、cv2.resizeに入る前に画像の名前を印刷するコード行と、サイズ変更後に名前を印刷する別の行を追加しました。障害のある画像で自動的に停止します。

2
T.Antoni

「Maçã」というフォルダに画像をロードしようとしたときにこの問題が発生しました。画像へのパスに英数字のみが含まれていることを確認してください

これは、画像の領域が適切に識別されないためです。試すことができる方法の1つを次に示します。

gray = cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)
r = cv2.selectROI(gray)
cv2.selectROI()

これにより、検出されない場合、各写真の画像の領域を手動で選択できます。

0
anonymous

私は同じ問題を抱えていますが、正しいパスを与えることで解決します

0
gokul

スキャン中に画像が正しく読み取られなかった可能性があるため、この問題に直面しています。そのため、tatイメージがロードされていることを確認してください。

if input_img is not None:
            img = cv2.resize(input_img, (IMG_SIZE,IMG_SIZE))
            training_data.append([np.array(img), np.array(label)])
        else:
            print("image not loaded")


これは現在の画像をスキップしてからスキャンを続行します。これは、次のように2つのセグメント結果に分割されます。 enter image description here
お役に立てれば :)

0
Ashwin Dhakal