我正在构建图像处理分类器,除了这一行以外的整个代码 -
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)
答案 0 :(得分:12)
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
答案 1 :(得分:2)
这是因为一张图片。
为了找到图像,我添加了一行代码,用于在图像进入cv2.resize
之前打印图像的名称,另一行在调整大小后显示名称。它会自动停在有故障的图像上。
答案 2 :(得分:1)
确保input_img的分辨率不为零,即(0,0,number_of_channels),这意味着它找不到任何图像。 因此,在对其执行操作之前,请添加以下检查:
if input_img.shape[0]!=0 and input_img.shape[1]!=0:
#operations on input_img
答案 3 :(得分:1)
如果要处理多张图像(例如1000张图像),则可能很难确定哪个图像给您带来了问题。也可能是,还有其他一些已损坏。在这种情况下,下面的代码可能会很有用。
for file in filenames:
try:
image = cv2.resize(cv2.imread(file), (size, size))
except:
print(file)
其中filenames
是包含图像名称的列表。
答案 4 :(得分:0)
您遇到此问题,因为扫描时可能无法正确读取图像。所以要确保加载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")
答案 5 :(得分:0)
这是因为未正确识别图像区域。这是您可以尝试的一种方法:
gray = cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)
r = cv2.selectROI(gray)
cv2.selectROI()
如果未检测到图像,则可以手动选择每个图像中的图像区域。