- Mac 上,首先读取子目录会有隐藏的.DS_store文件,在终端运行删除这些。
find ./ -name ".DS_Store" -depth -exec rm {} \; - 查找了永久不再生成这个文件的指令,重启后好像并没有用。。所以每次创文件夹还得删一次。
原文
代码
import numpy as np
import cv2
import os
from tqdm import tqdm
label=np.zeros( (6) )
data_=np.zeros((6,512,512))
array_img = []
def image(path):
print("-" * 50)
print("训练集读取")
'''读取路径下所有子文件夹中的图片并存入list'''
train = []
dir_counter = 0
x=0
i=0
h=-1
for child_dir in os.listdir(path):
child_path = os.path.join(path, child_dir)
h += 1
for dir_image in tqdm(os.listdir(child_path)):
img = cv2.imread(child_path + "//" + dir_image, cv2.IMREAD_COLOR)
img=cv2.resize(img,(512,512))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
data=np.zeros((512,512))
data[0:img.shape[0],0:img.shape[1]] = img
data_[i, :, :] = data[0:512, 0:512]
label[x] = h
i += 1
x += 1
dir_counter += 1
train.append(label)
train.append(data_)
return train
image('/Users/sinkarsenic/Downloads/mask/val/mask/test')
print('data_')
print(data_)
print('label')
print(label)
删完隐藏文件后还是报错,改了参数啥的 也没变好,debug发现是图片没读出来,刚好看到这篇文章给了我启发。 关于 NoneType : object has no attribute shape
把斜杆\改成/就可以了 但是这一段只是打印出标签并没有创建… 所以 mac使用python脚本快捷键创建txt文本 学会了 mac 的自动化操作 发现这段代码可以加点自己写的
def createtext():
path_name = os.getcwd()
path_name += '/'
text_name = '新文本_'
completeName = path_name + text_name + ".txt"
file1 = open(completeName , "w")
init_text = "Hello world!"
file1.write(init_text)
file1.close()
file_name("/Users/sinkarsenic/Downloads/mask/val/mask/test/nomask")
批量生成YOLO 格式标签
创建txt 的时候要获取图片名称,把.jpg去掉发现还有个空的数据,不去掉发现又是那个 dsstore! 于是加了个 if 判断处理后的文件长度,排除掉空的再生成 txt。
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
for file in files:
file = file.split('.')[0]
if len(file)!=0:
path_name = root
path_name += '/'
text_name = file
completeName = path_name + text_name + ".txt"
file1 = open(completeName, "w")
init_text = "0 0.500952 0.501429 0.998095 0.997143"
file1.write(init_text)
file1.close()
print(len(file))
批量给图片改名字加前缀
- 源代码是加前缀就行了,但我发现我的数据集原名字有点长,干脆都改成数字。
import os
import sys
path = "/Users/sinkarsenic/Downloads/mask/val/mask/test/nomask"
postfix = ".jpg"
mark = 'm_'
def add_prefix_files():
oldnames = os.listdir(path)
index = 0
for oldname in oldnames:
if oldname!=sys.argv[0]:
if oldname.endswith(postfix):
os.rename(os.path.join(path,oldname),os.path.join(path,mark + str(index) + '.jpg'))
print(oldname,"has been renamed successfully! New name is: ",mark+str(index) + '.jpg')
index=index+1
|