2025-09-22 02:07:45 +00:00
|
|
|
# 统计结果
|
|
|
|
|
import numpy as np
|
|
|
|
|
import os
|
|
|
|
|
from glob import glob
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
from multiprocessing import Pool
|
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def find_txt_files_pathlib(directory):
|
|
|
|
|
"""
|
|
|
|
|
使用pathlib.Path.rglob递归查找指定目录下所有.tif和.tiff文件
|
|
|
|
|
参数:
|
|
|
|
|
directory (str): 要搜索的根目录路径
|
|
|
|
|
返回:
|
|
|
|
|
list: 包含所有找到的.tif/.tiff文件完整路径的列表
|
|
|
|
|
"""
|
|
|
|
|
path = Path(directory)
|
|
|
|
|
# 使用rglob递归匹配所有.tif和.tiff文件
|
|
|
|
|
tif_files = list(path.rglob('*.txt'))
|
|
|
|
|
# 将Path对象转换为字符串路径
|
|
|
|
|
return [str(file) for file in tif_files]
|
|
|
|
|
|
|
|
|
|
def statictNumber(inlabelfilepath):
|
|
|
|
|
with open(inlabelfilepath,"r",encoding="utf-8") as f:
|
|
|
|
|
lines = f.readlines()
|
|
|
|
|
lineresult=[]
|
|
|
|
|
for l in lines:
|
|
|
|
|
if len(l) > 10:
|
|
|
|
|
lineresult.append(l)
|
|
|
|
|
return len(lineresult)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def StaticProcess(inlabelfolder,outcsvpath):
|
|
|
|
|
labelfilepaths=find_txt_files_pathlib(inlabelfolder)
|
|
|
|
|
with open(outcsvpath,"w",encoding="utf-8") as f:
|
2025-10-03 05:37:55 +00:00
|
|
|
f.write("切片名,军用飞机,民用飞机,军民一体飞机,军用轮船,民用轮船,民用机场,军用机场,军民一体机场,军用港口,民用港口,军民一体港口,总计\n")
|
2025-09-22 02:07:45 +00:00
|
|
|
f.write("标注,military_airplane, civil_airplane,mix_airpllane,military_ship,civil_ship,civil_airport,military_airport,mix_airport,military_harbor,civil_harbor,mix_harbor,Total\n")
|
|
|
|
|
|
|
|
|
|
for labelfilepath in labelfilepaths:
|
|
|
|
|
rastername=Path(labelfilepath).stem
|
|
|
|
|
JFJ=0
|
|
|
|
|
MFJ=0
|
|
|
|
|
JMFJ=0
|
|
|
|
|
JLC=0
|
|
|
|
|
MLC=statictNumber(labelfilepath)
|
|
|
|
|
MJC=0
|
|
|
|
|
JJC=0
|
|
|
|
|
JMJC=0
|
|
|
|
|
JGK=0
|
|
|
|
|
MGK=0
|
|
|
|
|
JMGK=0
|
|
|
|
|
Total=JFJ+MFJ+JMFJ+JLC+MLC+MJC+JJC+JMJC+JGK+MGK+JMGK
|
|
|
|
|
f.write(
|
|
|
|
|
"{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}\n".format(
|
|
|
|
|
# SAR影像名,StudentID,work_time,JFJ,MFJ,JMFJ,JLC,MLC,MJC,JJC,JMJC,JGK,MGK,JMGK,LD,DD,SB,HL,FL,JS,HP,SY,Total
|
|
|
|
|
rastername,JFJ,MFJ,JMFJ,JLC,MLC,MJC,JJC,JMJC,JGK,MGK,JMGK,Total
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getParams():
|
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
|
parser.add_argument('-i','--inlabelfolder',type=str,default=r'R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250910-不分类\C-人工检查\删除空标注', help='输入tiff的bin文件')
|
|
|
|
|
parser.add_argument('-o', '--outcsvpath',type=str,default=r'D:\TYSAR-德清院\切片对应目标的个数信息表_0919.csv', help='切片文件夹地址')
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
return args
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
args = getParams()
|
|
|
|
|
inlabelfolder = args.inlabelfolder
|
|
|
|
|
outcsvpath = args.outcsvpath
|
|
|
|
|
print('inlabelfolder:', inlabelfolder)
|
|
|
|
|
print('outcsvpath:', outcsvpath)
|
|
|
|
|
StaticProcess(inlabelfolder,outcsvpath)
|
|
|
|
|
|
|
|
|
|
|