Training_Data=[]
IMG_SIZE=100
def build():
Directory="D:\projects\Machine_learning\Dog_Cat\PetImages"
CATEGORY=["Cat","Dog"]
for category in CATEGORY:
path=os.path.join(Directory,category)
class_num=CATEGORIES.index(category)
for img in tqdm(os.listdir(path)):
try:
img_array=cv2.imread(
os.path.join(path,img),
cv2.IMREAD_GRAYSCALE
)
new_array=cv2.resize(img_array(IMG_SIZE,IMG_SIZE))
Training_Data.append([new_array,class_num])
except Exception as e:
pass
当我不通过cv2.IMREAD_GRAYSCALE时,它将给出不同长度的数组:
img_array=cv2.imread(os.path.join(path,img))
X = 74598
Y = 24886
为什么不使用training_data
时在cv2.IMREAD_GRAYSCALE
中追加3倍的元素?
答案 0 :(得分:0)
默认情况下,当您不传递cv2.IMREAD_GRAYSCALE
作为参数时,cv2.imread
将通过三个通道读取图像(它将图像加载为RGB)。当您将cv2.IMREAD_GRAYSCALE
作为参数传递时,每像素的位数正在变化(每像素只需1 * 8位,而不是3 * 8)。
如果需要,您可以使用depth()
和channels()
函数检出图像depth and channels,这可能有助于您更好地了解正在发生的事情。