movedata

import os.path
import shutil

import cv2
import xml.etree.ElementTree as ET
import pdb
import os
import math

def deletesinglefile(xmlpath,picpath, delclass,new_xmlpath,new_picpath):

    for annoName in os.listdir(xmlpath):
        try:
            # picFile = os.path.join(picpath, annoName.replace('xml','jpg'))
            annofile = os.path.join(xmlpath, annoName)
            print(annoName)
            # print("picFile:",picFile)
            print("annofile:",annofile)
            if os.path.exists(annofile) == False:
                raise FileNotFoundError
            tree = ET.parse(annofile)
            root = tree.getroot()

            picName = tree.find("filename").text
            picFile = os.path.join(picpath, picName)
            print("picFile:",picFile)

            annos = [anno for anno in root.iter()]
            for i, anno in enumerate(annos):
                if 'object' in anno.tag:
                    for element in list(anno):
                        if 'name' in element.tag:
                            #删除指定类别标签
                            if element.text in delclass:
                                root.remove(annos[i])
                                # new_full_picpath = os.path.join('%s/%s' % (new_picpath, annoName.replace('xml','jpg')))
                                # new_full_xmlpath = os.path.join('%s/%s' % (new_xmlpath, annoName))
                                # print("annofile:",annofile)
                                # print("new_full_xmlpath:",new_full_xmlpath)
                                # print("picFile:",picFile)
                                # print("annofinew_full_picpathle:",new_full_picpath)
                                # shutil.copy(annofile, new_full_xmlpath) 
                                # shutil.copy(picFile, new_full_picpath) 
                                # print(os.path.basename(annofile)+' have something deleted')
                                # break
                # break
                #存储修改
            new_full_picpath = os.path.join('%s/%s' % (new_picpath, picName))
            new_full_xmlpath = os.path.join('%s/%s' % (new_xmlpath, annoName))
            print("annofile:",annofile)
            print("new_full_xmlpath:",new_full_xmlpath)
            print("picFile:",picFile)
            print("annofinew_full_picpathle:",new_full_picpath)
            shutil.copy(annofile, new_full_xmlpath) 
            shutil.copy(picFile, new_full_picpath) 
            print(os.path.basename(annofile)+' have something deleted')
            # break
            tree = ET.ElementTree(root)
            tree.write(annofile, encoding="utf-8", xml_declaration=True)
        except Exception as e:
            print(e)
            pass
def selectObjectFile(xmlpath, picpath, delclass, new_xmlpath, new_picpath):
    # select xml File which contain the selectClass

    for annoName in os.listdir(xmlpath):
        try:
            # picFile = os.path.join(picpath, annoName.replace('xml','jpg'))
            annofile = os.path.join(xmlpath, annoName)
            
            # print(annoName)
            # print("picFile:",picFile)
            # print("annofile:",annofile)
            if os.path.exists(annofile) == False:
                raise FileNotFoundError
            tree = ET.parse(annofile)
            root = tree.getroot()

            picName = tree.find("filename").text.split('/')[-1]
            picFile = os.path.join(picpath, picName)
            print("picFile:",picFile)

            annos = [anno for anno in root.iter()]
            flag = 0
            for i, anno in enumerate(annos):
                if flag == 1: break
                if 'object' in anno.tag:
                    for element in list(anno):
                        if 'name' in element.tag:
                            #删除指定类别标签
                            if element.text in delclass:
                                flag = 1
                                # root.remove(annos[i])
                                new_full_picpath = os.path.join('%s/%s' % (new_picpath, picName))
                                new_full_xmlpath = os.path.join('%s/%s' % (new_xmlpath, annoName))
                                print("annofile:",annofile)
                                print("new_full_xmlpath:",new_full_xmlpath)
                                print("picFile:",picFile)
                                print("annofinew_full_picpathle:",new_full_picpath)
                                shutil.copy(annofile, new_full_xmlpath) 
                                shutil.copy(picFile, new_full_picpath) 
                                print(os.path.basename(annofile)+' have something move')
                                break
                # break
                #存储修改
            tree = ET.ElementTree(root)
            tree.write(annofile, encoding="utf-8", xml_declaration=True)
        except Exception as e:
            print(e)
            # pass
def deleteObejcet(xmlpath, picpath):
    # delete small bbox 

    for annoName in os.listdir(xmlpath):
        try:
            # picFile = os.path.join(picpath, annoName.replace('xml','jpg'))
            annofile = os.path.join(xmlpath, annoName)
            print(annoName)
            print("annofile:",annofile)
            if os.path.exists(annofile) == False:
                raise FileNotFoundError
            tree = ET.parse(annofile)
            root = tree.getroot()
            picFile = tree.find("filename").text
            print("picFile:",picFile)

            for obj in root.iter('object'):
                xmin = int(float(obj.find('bndbox').find('xmin').text))
                xmax = int(float(obj.find('bndbox').find('xmax').text))
                ymin = int(float(obj.find('bndbox').find('ymin').text))
                ymax = int(float(obj.find('bndbox').find('ymax').text))
                # print("xmin:",xmin, "xmax:",xmax, "ymin:",ymin, "ymax:",ymax)
                if (xmax-xmin)==0 or (ymax-ymin) ==0 :
                    print("xmin:",xmin, "xmax:",xmax, "ymin:",ymin, "ymax:",ymax)
                    root.remove(obj)
                elif (int(float(ymax))-int(float(ymin)))/(int(float(xmax))-int(float(xmin))) < 0.2 or (int(float(xmax))-int(float(xmin)))/(int(float(ymax))-int(float(ymin))) < 0.2 :
                    print("xmin:",xmin, "xmax:",xmax, "ymin:",ymin, "ymax:",ymax)
                    root.remove(obj)
            # #存储修改
            tree = ET.ElementTree(root)
            tree.write(annofile, encoding="utf-8", xml_declaration=True)
        except Exception as e:
            print(e)
            pass

def each_file(imgPath, xmlPath, new_imgPath, new_xmlPath):
    '''
    读取每个文件夹,将遇到的指定文件统统转移到指定目录中
    :param filepath: 想要获取的文件的目录
    :param new_filepath: 想要转移的指定目录
    :return: 
    '''
    l_dir = os.listdir(imgPath)  # 读取目录下的文件或文件夹

    for one_dir in l_dir:  # 进行循环
        full_xmlPath = os.path.join('%s/%s' % (xmlPath, one_dir.replace('jpg','xml')))  # 构造路径
        full_imgPath = os.path.join('%s/%s' % (imgPath, one_dir) ) # 构造路径
        # new_full_xmlPath = os.path.join('%s/%s' % (new_xmlPath, one_dir))
        if os.path.isfile(full_xmlPath):  # 如果是文件类型就执行转移操作
            if one_dir.split('.')[1] == 'jpg':  # 只转移txt文件,修改相应后缀就可以转移不同的文件
                # full_xmlPath = os.path.join('%s/%s' % (xmlPath, one_dir.replace('jpg','xml')))  # 构造路径
                new_full_xmlPath = os.path.join('%s/%s' % (new_xmlPath, one_dir.replace('jpg','xml')))
                new_full_imgPath = os.path.join('%s/%s' % (new_imgPath, one_dir))

                shutil.copy(full_xmlPath, new_full_xmlPath)  # 这个是转移的语句,最关键的一句话
                shutil.copy(full_imgPath, new_full_imgPath)  # 这个是转移的语句,最关键的一句话

        else:   # 不为文件类型就继续递归
            # each_file(full_path, new_filepath)  # 如果是文件夹类型就有可能下面还有文件,要继续递归
            pass

def create_dir_not_exist(path):
    if not os.path.exists(path):
        os.mkdir(path)

if __name__ == '__main__':

    allPath = '/home/hs/data/data_jiaxingyili/goods/smalldeal'
    img_path = allPath + '/imgc'
    xml_path = allPath + '/xmlc'
    new_img_path = allPath + '/imgs'
    new_xml_path = allPath + '/xmls'

    # xml_path = "/home/hs/data/0_paimian/sku/annotations3"
    # img_path = "/home/hs/data/0_paimian/sku/images3"
    # new_img_path = "/home/hs/data/0_paimian/sku/img"
    # new_xml_path = "/home/hs/data/0_paimian/sku/xml"

    create_dir_not_exist(new_img_path)
    create_dir_not_exist(new_xml_path)

    # each_file(img_path, xml_path, new_img_path, new_xml_path)
    # deletesinglefile(xml_path, img_path, 'goods', new_xml_path, new_img_path)

    # deleteObejcet(xml_path, img_path)
    selectObjectFile(xml_path, img_path, 'goods', new_xml_path, new_img_path)
    # deletesinglefile(img_path, xml_path, new_img_path, new_xml_path)
以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值