在通过cv2导入图片,然后用resize来改变图像大小的时候,总会报错:
error: (-215) ssize.width > 0 && ssize.height > 0 in function cv::resize
百思不得其解后,把resize注释掉,然后print每个图片的name发现了:
Thumbs.db这个windows自带的缩略图隐藏文件也被当成图片读了进来,所以就没有办法resize了;
修改如下,加上判断即可
if img_name != "Thumbs.db"
具体代码如下,将XXXXXXX换成文件路径即可:
import cv2:
import numpy as np
import os
dirpath = 'XXXXXXXX'
index0 = 0
num=0
classis = {}
imgs = []
labels = []
for filename in os.listdir(dirpath):
filepath = os.path.join(dirpath, filename)
classis[index0] = filename
for img_name in os.listdir(filepath):
img_path = os.path.join(filepath, img_name)
img = cv2.imread(img_path)
if img_name != "Thumbs.db":
print(img_name)
img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)
imgs.append(img)
labels.append(index0)
num+=1
print(num)
index0 += 1
print(classis)
Remark:
VGG16的图片格式为(224,224,3),如果是fineturn的话不能修改图片的尺寸,即输入网络的图片均需要通过resize到(224,224)!