Mac 上,首先读取子目录会有隐藏的.DS_store文件,在终端运行删除这些。
find ./ -name ".DS_Store" -depth -exec rm {} ;查找了永久不再生成这个文件的指令,重启后好像并没有用。。所以每次创文件夹还得删一次。
原文
代码
# 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) # 斜杆改成/ #cv2.namedWindow("Image") # cv2.imshow("Image", img) 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 = raw_input() path_name += '/' text_name = '新文本_' # + str(random.randint(0, 65536)) 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): #print(root) #当前目录路径 #print(dirs) #当前路径下所有子目录 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_' #'nm_' # 前缀名 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)