error: (-215) ssize.width > 0 && ssize.height > 0 in function resize

error: (-215) ssize.width > 0 && ssize.height > 0 in function 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)

嗯,明明是这一行 input_img=cv2.imread(data_path + '/'+ dataset + '/'+ img ) returns 一个空数组。

阅读前请先检查图片是否存在。并且最好不要使用字符串组合来连接文件路径,而是使用python os.path.join。

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

因为一张图。

为了找到图像,我添加了一行代码,在图像进入 cv2.resize 之前打印图像的名称,另一行代码在调整大小后打印名称。它会自动停在错误的图像上。

您遇到这个问题是因为扫描时可能没有正确读取图像。所以请确保已加载 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")


这将跳过当前图像,然后继续扫描。这分成两段结果如下:
希望这对您有所帮助 :)

这是因为图像区域没有正确识别。您可以尝试以下一种方法:

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

这将允许您手动 select 如果未检测到每张图片中的图像区域。

确保 input_img 的分辨率不为零,即 (0,0,number_of_channels),这意味着它没有找到任何图像。 所以在对其执行操作之前添加以下检查:

if input_img.shape[0]!=0 and input_img.shape[1]!=0:
    #operations on input_img

如果您处理多张图片(例如,1000 张图片),您可能很难确定哪张图片给您带来了问题。也可能是,还有几个人腐败了。在这种情况下,下面的代码可能会有用。

for file in filenames:
    try:
        image = cv2.resize(cv2.imread(file), (size, size))
    except:
        print(file)

其中 filenames 是包含图像名称的列表。

对于这个错误,你可以简单地使用这个代码。它肯定会运行并解决您的问题。我也遇到了这个错误并用这段代码修复了它。

img = cv2.imread(path + '\' + img_name)