130 lines
4.3 KiB
Python
130 lines
4.3 KiB
Python
import numpy as np
|
|
import os
|
|
from glob import glob
|
|
from pathlib import Path
|
|
from multiprocessing import Pool
|
|
########################################################
|
|
# 函数区
|
|
########################################################
|
|
|
|
spacetySliceEnvPathExEPath=r"D:\ProgramData\miniconda3\envs\spacetySliceEnv\python.exe"
|
|
|
|
def find_tif_files_pathlib(directory):
|
|
"""
|
|
使用pathlib.Path.rglob递归查找指定目录下所有.tif和.tiff文件
|
|
|
|
参数:
|
|
directory (str): 要搜索的根目录路径
|
|
|
|
返回:
|
|
list: 包含所有找到的.tif/.tiff文件完整路径的列表
|
|
"""
|
|
path = Path(directory)
|
|
# 使用rglob递归匹配所有.tif和.tiff文件
|
|
tif_files = list(path.rglob('*.tif')) + list(path.rglob('*.tiff'))
|
|
# 将Path对象转换为字符串路径
|
|
return [str(file) for file in tif_files]
|
|
|
|
|
|
def find_shp_files_pathlib(directory):
|
|
"""
|
|
使用pathlib.Path.rglob递归查找指定目录下所有.tif和.tiff文件
|
|
|
|
参数:
|
|
directory (str): 要搜索的根目录路径
|
|
|
|
返回:
|
|
list: 包含所有找到的.tif/.tiff文件完整路径的列表
|
|
"""
|
|
path = Path(directory)
|
|
# 使用rglob递归匹配所有.tif和.tiff文件
|
|
tif_files = list(path.rglob('*.shp'))
|
|
# 将Path对象转换为字符串路径
|
|
return [str(file) for file in tif_files]
|
|
|
|
def preProcessTiFF(tiffpath,preFolderPath):
|
|
if not os.path.exists(preFolderPath):
|
|
os.makedirs(preFolderPath)
|
|
file_path = Path(tiffpath)
|
|
directory_path = str(file_path.resolve().parent.name)
|
|
rootname=Path(tiffpath).stem
|
|
outpngpath=os.path.join(preFolderPath,"I"+directory_path+"_"+rootname+'.png')
|
|
programpath=r"R:\TYSAR-德清院\A-预处理-未标注\A0-算法版本\AA\SpacetySliceDataTools\tools\SpacetyTIFFDataStretch2PNG_AB.py"
|
|
|
|
cmdtxt=r"{} {} -i {} -o {} --filemode --SquareRoot".format(spacetySliceEnvPathExEPath,programpath,tiffpath,outpngpath)
|
|
if os.system(cmdtxt) ==2:
|
|
print("sucess:",cmdtxt)
|
|
return "sucess: {}".format(cmdtxt)
|
|
else:
|
|
print("failed:",cmdtxt)
|
|
return "failed: {}".format(cmdtxt)
|
|
pass
|
|
|
|
def preProcessLabelshapefile(shpfilepath,preFolderPath):
|
|
if not os.path.exists(preFolderPath):
|
|
os.makedirs(preFolderPath)
|
|
file_path = Path(shpfilepath)
|
|
directory_path = str(file_path.resolve().parent.name)
|
|
|
|
rootname = Path(shpfilepath).stem
|
|
txtpath=os.path.join(preFolderPath,r"I"+directory_path+"_"+rootname+'.txt')
|
|
programpath=r"R:\TYSAR-德清院\A-预处理-未标注\A0-算法版本\AA\SpacetySliceDataTools\tools\shapefile2dota.py"
|
|
cmdtxt=r"{} {} -i {} -o {}".format(spacetySliceEnvPathExEPath,programpath,shpfilepath,txtpath)
|
|
if os.system(cmdtxt) ==2:
|
|
print("sucess:",cmdtxt)
|
|
return "sucess: {}".format(cmdtxt)
|
|
else:
|
|
print("failed:",cmdtxt)
|
|
return "failed: {}".format(cmdtxt)
|
|
pass
|
|
|
|
|
|
########################################################
|
|
# 流程执行区
|
|
########################################################
|
|
if __name__ == '__main__':
|
|
|
|
# 1. 预处理流程
|
|
async_results = []
|
|
with Pool() as pool:
|
|
# 聚束模式
|
|
srcFolderPath = r"D:\Annotation_Y\港口\聚束模式"
|
|
tiffPaths = find_tif_files_pathlib(srcFolderPath)
|
|
shpPaths = find_shp_files_pathlib(srcFolderPath)
|
|
preFolderPath = r"D:\Annotation_Y\预处理\聚束模式"
|
|
for tiffpath in tiffPaths:
|
|
async_results.append(
|
|
pool.apply_async(preProcessTiFF, (tiffpath,preFolderPath,))
|
|
)
|
|
|
|
for shppath in shpPaths:
|
|
async_results.append(
|
|
pool.apply_async(preProcessLabelshapefile, (shppath,preFolderPath,))
|
|
)
|
|
|
|
# 条带模式
|
|
srcFolderPath = r"D:\Annotation_Y\港口\条带模式"
|
|
tiffPaths = find_tif_files_pathlib(srcFolderPath)
|
|
shpPaths = find_shp_files_pathlib(srcFolderPath)
|
|
preFolderPath = r"D:\Annotation_Y\预处理\条带模式"
|
|
for tiffpath in tiffPaths:
|
|
async_results.append(
|
|
pool.apply_async(preProcessTiFF, (tiffpath,preFolderPath,))
|
|
)
|
|
|
|
for shppath in shpPaths:
|
|
async_results.append(
|
|
pool.apply_async(preProcessLabelshapefile, (shppath,preFolderPath,))
|
|
)
|
|
|
|
|
|
for async_result in async_results:
|
|
print(async_result.get())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|