Python 猫狗识别:图像数据预处理和训练测试集划分

本文将介绍如何使用 Python 进行猫狗图像识别,并重点讲解数据预处理和训练测试集划分步骤。

代码示例:

import os
import cv2
import numpy as np
from sklearn.model_selection import train_test_split

# 设置图片参数
img_width, img_height = 150, 150
input_shape = (img_width, img_height, 3)

# 数据准备
def prepare_data():
    data = []
    labels = []
    cat_path = 'C:/Users/胖虎/Desktop/catsdogs/test/Cat'
    dog_path = 'C:/Users/胖虎/Desktop/catsdogs/test/Dog'
   
    # 加载猫的图片
    for img in os.listdir(cat_path):
        img_array = cv2.imread(os.path.join(cat_path, img))
        img_array = cv2.resize(img_array, (img_width, img_height))
        data.append(img_array)
        labels.append(0) # 猫的标签为0
        
    # 加载狗的图片
    for img in os.listdir(dog_path):
        img_array = cv2.imread(os.path.join(dog_path, img))
        img_array = cv2.resize(img_array, (img_width, img_height))
        data.append(img_array)
        labels.append(1) # 狗的标签为1
        
    # 数据归一化
    data = np.array(data) / 255.0
    labels = np.array(labels)
    
    # 数据划分为训练集和测试集
    return train_test_split(data, labels, test_size=0.2, random_state=42)

# data 和 labels 里面填什么内容:data 和 labels 里面填的是图片数据和对应的标签。data 是一个列表,每个元素是一张图片的像素值数组,labels 是一个列表,每个元素是对应图片的标签(0 表示猫,1 表示狗)。

代码解析:

  1. 导入库: 首先导入必要的库,包括 os 用于文件操作、cv2 用于图像处理、numpy 用于数值计算和 sklearn 用于训练测试集划分。
  2. 设置图片参数: 定义图像宽度、高度和通道数,并用 input_shape 表示图像的形状。
  3. 数据准备函数 prepare_data():
    • 创建两个空列表 datalabels,分别用于存储图片数据和标签。
    • 指定猫和狗图片所在目录。
    • 循环读取目录中的每个图片文件:
      • 使用 cv2.imread() 加载图片。
      • 使用 cv2.resize() 将图片调整为目标尺寸。
      • 将图片数据添加到 data 列表,并将对应的标签(0 表示猫,1 表示狗)添加到 labels 列表。
    • 使用 np.array() 将数据转换成 NumPy 数组,并进行数据归一化。
    • 使用 train_test_split() 函数将数据划分为训练集和测试集,测试集占总数据的 20%,并设置随机种子 random_state=42 保证每次划分结果一致。
  4. 返回值: 该函数返回训练集数据、训练集标签、测试集数据和测试集标签。

注意: 此代码仅展示数据预处理和训练测试集划分部分,实际猫狗识别需要使用深度学习模型进行训练。

相关资源:

Python 猫狗识别:图像数据预处理和训练测试集划分

原文地址: https://www.cveoy.top/t/topic/o9uv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录