图片目录
我想制作的项目是一个关于过度曝光图片转化为正常图片的卷积神经网络模型,这里讲的主要是在已经有图片情况下的数据集制作
在我想制作的项目中,我分为normal和exposed文件夹 内部对于一个场景的正常和过曝光图片的文件名是相同的。
具体目录为./pictures/normal 和 ./pictures/exposed 两个文件夹
如下两张图片
图片皆为彩色图片,在训练模型时因为主要是做测试所用所以要转化为灰度图片较好,虽然是灰度图,但实际还是三通道,同时将两边图片打上标签。如果想制作鉴别模型就分个8:2开 变成训练集和测试集
具体的数据集制作代码如下
import os
import random
import cv2
import numpy as np
# 设置图片路径和标签
img_dir = "./pictures"
labels = ['normal', 'exposed']
# 设置数据集路径
dataset_dir = './pictures/dataset'
# 创建保存训练集和测试集的文件夹
train_dir = os.path.join(dataset_dir, 'train')
test_dir = os.path.join(dataset_dir, 'test')
if not os.path.exists(train_dir):
os.makedirs(train_dir)
if not os.path.exists(test_dir):
os.makedirs(test_dir)
# 创建数据集
for label in labels:
img_label_dir = os.path.join(img_dir, label)
files = os.listdir(img_label_dir)
random.shuffle(files)
for i, file in enumerate(files):
img_path = os.path.join(img_label_dir, file)
img = cv2.imread(img_path)
# 确保图像是彩色图像
if len(img.shape) < 3 or img.shape[2] != 3:
continue
# 缩放图像大小
img = cv2.resize(img, (256, 256))
# 将彩色图像转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 构造保存路径和文件名
if i < len(files) * 0.8:
save_dir = train_dir
else:
save_dir = test_dir
save_label_dir = os.path.join(save_dir, label)
if not os.path.exists(save_label_dir):
os.makedirs(save_label_dir)
save_path = os.path.join(save_label_dir, file)
# 保存图像
cv2.imwrite(save_path, gray_img)
print('数据集制作完成!')