python学习笔记6——文件操作来生成船只侧面图像的描述文件
admin
2023-07-30 20:43:47
0

最近在做船只检测的工作需要大量的正样本,之前的一些样本各种形态的船只都有,这一次训练分类器希望使用只含船只侧面的图像,这样检测船的侧面的成功率可能会提高一点。这样就需要大量的船只侧面图像,并生成描述文件。这里我们之前已经生成过全船只的描述文件,只需要挑出侧面的图像,然后根据有的图像从原描述文件中选取存在的图像的描述信息保存在新的描述文件
描述文件的内容大概是这个样子的

224871_0.jpg 1 6 50 248 82
224871_10.jpg 1 16 79 269 89
224871_11.jpg 1 80 53 122 40
224871_12.jpg 1 53 57 219 79
224871_13.jpg 1 16 94 251 72
224871_14.jpg 1 20 79 197 66
224871_15.jpg 1 6 69 294 98
224871_16.jpg 1 91 86 155 54
224871_17.jpg 1 51 70 202 72
224871_18.jpg 1 6 42 294 99
224871_19.jpg 1 9 36 291 98
224871_1.jpg 1 37 77 243 81
224871_20.jpg 1 27 27 248 83
224871_21.jpg 1 40 63 250 80
224871_22.jpg 1 18 65 234 78
224871_23.jpg 1 12 51 272 89
224871_24.jpg 1 21 83 252 73
224871_25.jpg 1 32 62 230 75
224871_26.jpg 1 0 61 298 99
224871_27.jpg 1 8 100 271 83
224871_28.jpg 1 0 60 275 92
224871_29.jpg 1 72 100 151 49
224871_2.jpg 1 62 46 179 60
224871_30.jpg 1 137 64 149 49
224871_31.jpg 1 34 119 240 80

思路很简单,就是读一行看看那个jpg文件在不在文件夹里面,如果在的话,就把这行复制进新的描述文件。

第一个代码

import glob,os
unfound=0 (u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/*.jpg\')]
with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/info.txt\', \'r\') as f:
    with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/pos8.txt\', \'w\') as w:
        for filetitle in f.readlines():
            if filetitle.split(u\' \')[0] in [os.path.split(filename)[-1] for filename in glob.glob (u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/*.jpg\')]:
                w.write(filetitle)
            else:
                unfound=unfound+1        
        print u\'一共有%s个图片没找到\' % unfound

这个代码挺短的,但是云讯速度却很慢原因在于第6行每次都要算一下整个集合,太慢了,所以可以优化

第二个代码

import glob,os
unfound,filenamelist=0,[os.path.split(filename)[-1] for filename in glob.glob (u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/*.jpg\')]
with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/info.txt\', \'r\') as f:
    with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/pos8.txt\', \'w\') as w:
        for filetitle in f.readlines():
            if filetitle.split(u\' \')[0] in filenamelist:
                w.write(filetitle)
            else:
                unfound=unfound+1        
        print u\'一共有%s个图片没找到\' % unfound

同样行数的代码速度提高了

第三个代码

import glob,os
unfound,filenamelist=0,[os.path.split(filename)[-1] for filename in glob.glob (u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/*.jpg\')]
with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/info.txt\', \'r\') as f:
    with open(u\'D:/IP_CV_WorkSpace/Img/第三批分类器/pos8/pos8.txt\', \'w\') as w:
        filelist=f.readlines();
        found=[w.write(filetitle) for filetitle in filelist if filetitle.split(u\' \')[0] in filenamelist]        
        print u\'一共有%s个图片没找到\' % (len(filelist)-len(found))

使用列表生成器代码更短啦

版权声明:本文为博主原创文章,欢迎转载和分享,但请声明出处
http://blog.csdn.net/zhzz2012/article/details/47979387

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...