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)
我正在构建图像处理分类器。这一行给我一个错误:
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)