python 读取文件转txt crnn

import os
import sys
import cv2
import re
sys.path.append(os.getcwd())

# 获取指定路径下所有指定后缀的文件
# dir 指定路径
# ext 指定后缀,链表&不需要带点 或者不指定。例子:['xml', 'java']
def write_result(str):
    txtPath=r'/home/zyg/Desktop/data/Test/sample.txt'
    writeresult = open(txtPath, 'a+')
    str1 = writeresult.write(str + '\n')
    writeresult.close()
    return str
def GetFileFromThisRootDir(dir,ext = None):
    allfiles = []
    needExtFilter = (ext != None)
    for root,dirs,files in os.walk(dir):
        for filespath in files:
            filepath = os.path.join(root, filespath)
            extension = os.path.splitext(filepath)[1][1:]
            if needExtFilter and extension in ext:
                allfiles.append(filepath)
            elif not needExtFilter:
                allfiles.append(filepath)
    return allfiles

###---保存文件数据,按照顺序保存

def MoveFiles(files,PathTo):
    for fl in files:
        PathName,fileName=os.path.split(fl)
        strPath=PathTo+fileName
        split_str = re.split(r"[_]", fileName)
        str=strPath+' '+split_str[-2]
        write_result(str)
        os.rename(fl, os.path.join(PathTo, fileName))

        # splitext splitdrive

    #    if (count<SumFiles):
     #       print(fl)
      #      picname = str(count) + '.jpg'
          #

           # count = count + 1
def test():
    str="192_168_1_1.jpg"
    pattern=re.compile(r"hello")
    # 使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
    split_str=re.split(r"[_.]",str)
    print(split_str[-2])
    print(split_str)



    result1 = re.match(pattern, 'hello')
    result2 = re.match(pattern, 'helloo CQC!')
    result3 = re.match(pattern, 'helo CQC!')
    result4 = re.match(pattern, 'hello CQC!')
    # 如果1匹配成功
    if result1:
        # 使用Match获得分组信息
        print (result1.group())
    else:
        print('1匹配失败!')

    # 如果2匹配成功
    if result2:
        # 使用Match获得分组信息
        print(result2.group())
    else:
        print ('2匹配失败!')

    # 如果3匹配成功
    if result3:
        # 使用Match获得分组信息
        print(result3.group())
    else:
        print('3匹配失败!')

    # 如果4匹配成功
    if result4:
        # 使用Match获得分组信息
        print (result4.group())
    else:
        print('4匹配失败!')

def readFile(fromTxt):
    try:
        f=open(fromTxt,encoding='utf-8')
        data=f.readlines()
        for line in data:
            print(line.strip())
    except:
        print("file open error")
    finally:
        if f:
            f.close()



if __name__ == '__main__':
    pathTo = u"/home/zyg/Desktop/data/Test/"
    pathForm = u"/home/zyg/Desktop/train_data/Test"
    #dirs = os.listdir(path)  # 获取指定路径下的文件
    assert os.path.exists(pathTo)
    files = GetFileFromThisRootDir(pathForm, ".jpg")
    MoveFiles(files,pathTo)
    test()


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一份示例代码,可以用于制作并运行CRNN所需的LMDB数据集。 ```python import os import random import numpy as np import cv2 import lmdb import six # 设置随机数种子 random.seed(123456) # 读取数据集列表 def read_dataset_list(dataset_dir): dataset_list = [] with open(os.path.join(dataset_dir, "dataset.txt"), "r") as f: for line in f: items = line.strip().split(" ") image_path = os.path.join(dataset_dir, items[0]) label = items[1] dataset_list.append((image_path, label)) return dataset_list # 生成随机序列 def get_random_seq(num): seq = [i for i in range(num)] random.shuffle(seq) return seq # 生成 LMDB 数据集 def build_lmdb_dataset(dataset_dir, lmdb_dir): # 读取数据集列表 dataset_list = read_dataset_list(dataset_dir) # 打乱数据集顺序 seq = get_random_seq(len(dataset_list)) dataset_list = [dataset_list[i] for i in seq] # 创建 LMDB 数据库 env = lmdb.open(lmdb_dir, map_size=int(1e12)) with env.begin(write=True) as txn: for i, (image_path, label) in enumerate(dataset_list): # 加载图像 image = cv2.imread(image_path) # 换为灰度图像 image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 换为 Numpy 数组 image = np.array(image) # 换为字节流 image = image.tobytes() label = six.ensure_str(label).encode("utf-8") # 生成键值对 key = "{:08d}".format(i).encode("ascii") value = (image, label) # 写入 LMDB 数据库 txn.put(key, six.moves.cPickle.dumps(value)) if i % 1000 == 0: print("Write %d / %d" % (i, len(dataset_list))) print("Finish writing lmdb.") ``` 这段代码可以实现从给定的数据集目录中读取图像和标签,然后将它们换为LMDB格式并写入到指定的LMDB目录中。要使用此代码,请在Python环境中安装OpenCV和LMDB库,并按照自己的需求修改代码中的数据集目录和LMDB目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值