1 Star 0 Fork 0

tristenqaq/good-bad-orange

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
update_images.py 3.86 KB
一键复制 编辑 原始数据 按行查看 历史
tristenqaq 提交于 2022-02-01 14:03 . 首次提交
# -*- coding:utf-8 -*-
import os
import numpy as np
import shutil
import configparser
from PIL import Image
import time
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini', encoding='utf-8')
data_dir = config.get('section_1', 'DATA_DIR')
data_list = os.listdir(data_dir)
img_size = int(config.get('section_2', 'IMG_SIZE'))
def remove_old(DIR):
"""
清空DIR目录下所有文件
:param DIR:目标目录
:return:
"""
list = os.listdir(DIR)
print("清空旧文件,目标目录:{}".format(DIR))
if not list:
print("目标目录已为空\n")
return 0
for f in list:
path = os.path.join(DIR, f)
os.remove(path)
print("目标目录已清空\n")
def update_image(src_dir, update_list, label):
"""
具体实现图片素材更新到项目data中
:param src_dir:图片源目录,项目外源素材,../orange_data/xxx
:param update_list:待更新图片目录,项目内data
:param label:标签,指明调用类型,bad.test,bad.train,good.test,good.train
:return:
"""
# 确定目标目录
list_label = label.split(".")
print("update : " + label)
if list_label[1] == "test":
des_dir = "data/test"
else:
des_dir = "".join("data/train".format())
# 目标目录已有文件列表
list = os.listdir(des_dir)
list_len = len(list)
# 遍历更新列表
for image in update_list:
# 求image在更新列表中的索引值,以用于命名新文件
index = update_list.index(image)
if list_label[1] == "test":
image_new = "".join("test.{}.jpg".format(list_len + index)) # test在已有文件index上追加test.index.jpg
else:
image_new = "".join("{}.{}.jpg".format(list_label[0], index)) # bad.index.jpg/goog.index.jpg
# 图片完整路径
image_src = os.path.join(src_dir, image)
image_des = os.path.join(des_dir, image_new)
shutil.copy(image_src, image_des) # 图片复制
# 图片尺寸修改
img = Image.open(image_des)
img_resize = img.resize((img_size, img_size), Image.ANTIALIAS) # Image.ANTIALIAS抗锯齿
img_resize.save(image_des)
print(label + "更新成功\n")
def cut_image(image_dir):
"""
将源路径下的图片分成test和train两部分
:param image_dir:../orange_data/xxx
:return:
:param image_dir:
:return:
"""
print("分割" + image_dir + "下图片为test和train部分")
image_list = os.listdir(image_dir) # 得到image_dir下所有文件列表
image_num = len(image_list)
print("image num : {}".format(image_num))
# 打乱文件顺序
# 用numpy的方法,根据打乱的索引random_index来打乱image_list文件顺序
random_index = np.arange(image_num)
np.random.shuffle(random_index)
image_list = np.array(image_list)
image_list = image_list[random_index]
image_list = image_list.tolist()
# 取前10%做test,后90%做train
test_num = int(image_num / 10)
print("{} to test,{} to train\n".format(test_num,image_num - test_num))
# 切片得test和train图片列表
test_list = image_list[:test_num]
train_list = image_list[test_num:]
return test_list,train_list
def update():
"""
更新项目data
:return:
"""
update_list = ["bad","good"]
for i in range(2):
label = update_list[0]
src_dir = "{}/{}".format(data_dir, data_list[i])
# 获得test列表,train列表
test_list, train_list = cut_image(src_dir)
update_image(src_dir, test_list, label + ".test")
update_image(src_dir, train_list, label + ".train")
def main():
# 移除项目下data旧图片
remove_old("data/test")
remove_old("data/train")
# 更新图片至项目内
update()
if __name__ == '__main__':
main()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tristenqaq/good-bad-orange.git
[email protected]:tristenqaq/good-bad-orange.git
tristenqaq
good-bad-orange
good-bad-orange
master

搜索帮助