优化可视化内容

This commit is contained in:
龙澳 2024-12-19 12:09:48 +08:00
parent e9cd12b2f6
commit 9e092910ea
6 changed files with 107 additions and 45 deletions

View File

@ -185,7 +185,7 @@ class ImagePreprocessor:
if __name__ == '__main__':
# 创建配置
config = PreprocessConfig(
image_dir=r'E:\datasets\UAV\1815',
image_dir=r'E:\datasets\UAV\1815\images',
output_dir=r'E:\datasets\UAV\1815\output',
filter_grid_size=0.001,
filter_dense_distance_threshold=10,

Binary file not shown.

Binary file not shown.

View File

@ -1,44 +0,0 @@
from gps_extractor import GPSExtractor
from gps_filter import GPSFilter
from grid_divider import GridDivider
import os
import pandas as pd
import shutil
import matplotlib.pyplot as plt
DATASET = r'C:\datasets\1815\output\grid_5\grid_5\images'
IS_ORIGIN = True
if __name__ == '__main__':
if IS_ORIGIN:
extractor = GPSExtractor(DATASET)
gps_points = extractor.extract_all_gps()
else:
# 提取九宫格中的GPS数据
gps_points = []
for subdir in os.listdir(DATASET):
subdir_path = os.path.join(DATASET, subdir)
if os.path.isdir(subdir_path):
extractor = GPSExtractor(subdir_path)
sub_gps_points = extractor.extract_all_gps()
gps_points = gps_points + sub_gps_points
print(len(sub_gps_points))
longitudes = [p['lon'] for p in gps_points]
latitudes = [p['lat'] for p in gps_points]
# 绘制散点图
plt.figure(figsize=(10, 8))
plt.scatter(longitudes, latitudes, color='blue', marker='o')
# 添加标记,显示每个点的图像文件名
for i, image in enumerate(gps_points):
plt.text(longitudes[i], latitudes[i], image['file'], fontsize=9, ha='right')
# 添加图表标签
plt.title("GPS Coordinates of Images", fontsize=14)
plt.xlabel("Longitude", fontsize=12)
plt.ylabel("Latitude", fontsize=12)
# 显示图形
plt.grid(True)
plt.show()

55
tools/odm_pip_time.py Normal file
View File

@ -0,0 +1,55 @@
from datetime import datetime
import json
def parse_args():
import argparse
parser = argparse.ArgumentParser(description="ODM log time")
parser.add_argument(
"--path", default=r"E:\datasets\UAV\1815\project\log.json")
args = parser.parse_args()
return args
def main(args):
# 读取 JSON 文件
with open(args.path, 'r') as file:
data = json.load(file)
# 提取 "stages" 中每个步骤的开始时间和持续时间
stage_timings = []
for i, stage in enumerate(data.get("stages", [])):
stage_name = stage.get("name", "Unnamed Stage")
start_time = stage.get("startTime")
# 获取当前阶段的开始时间
if start_time:
start_dt = datetime.fromisoformat(start_time)
# 获取阶段的结束时间:可以是下一个阶段的开始时间,或当前阶段的 `endTime`(如果存在)
if i + 1 < len(data["stages"]):
end_time = data["stages"][i + 1].get("startTime")
else:
end_time = stage.get("endTime") or data.get("endTime")
if end_time:
end_dt = datetime.fromisoformat(end_time)
duration = (end_dt - start_dt).total_seconds()
stage_timings.append((stage_name, duration))
# 输出每个阶段的持续时间,调整为对齐格式
total_time = 0
print(f"{'Stage Name':<25} {'Duration (seconds)':>15}")
print("=" * 45)
for stage_name, duration in stage_timings:
print(f"{stage_name:<25} {duration:>15.2f}")
total_time += duration
print('Total Time:', total_time)
if __name__ == '__main__':
args = parse_args()
main(args)

51
tools/show_GPS.py Normal file
View File

@ -0,0 +1,51 @@
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import matplotlib.pyplot as plt
from preprocess.gps_extractor import GPSExtractor
DATASET = r'E:\湖南省第二测绘院\11-06-项目移交文件(王辉给)\无人机二三维节点扩容生产影像\影像数据\1009'
if __name__ == '__main__':
extractor = GPSExtractor(DATASET)
gps_points = extractor.extract_all_gps()
# 创建两个子图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(20, 8))
# 左图:原始散点图
ax1.scatter(gps_points['lon'], gps_points['lat'],
color='blue', marker='o', label='GPS Points')
ax1.set_title("GPS Coordinates of Images", fontsize=14)
ax1.set_xlabel("Longitude", fontsize=12)
ax1.set_ylabel("Latitude", fontsize=12)
ax1.grid(True)
ax1.legend()
# # 右图:按时间排序的轨迹图
# gps_points_sorted = gps_points.sort_values('date')
# # 绘制飞行轨迹线
# ax2.plot(gps_points_sorted['lon'][300:600], gps_points_sorted['lat'][300:600],
# color='blue', linestyle='-', linewidth=1, alpha=0.6)
# # 绘制GPS点
# ax2.scatter(gps_points_sorted['lon'][300:600], gps_points_sorted['lat'][300:600],
# color='red', marker='o', s=30, label='GPS Points')
# 标记起点和终点
# ax2.scatter(gps_points_sorted['lon'].iloc[0], gps_points_sorted['lat'].iloc[0],
# color='green', marker='^', s=100, label='Start')
# ax2.scatter(gps_points_sorted['lon'].iloc[-1], gps_points_sorted['lat'].iloc[-1],
# color='purple', marker='s', s=100, label='End')
ax2.set_title("UAV Flight Trajectory", fontsize=14)
ax2.set_xlabel("Longitude", fontsize=12)
ax2.set_ylabel("Latitude", fontsize=12)
ax2.grid(True)
ax2.legend()
# 调整子图之间的间距
plt.tight_layout()
plt.show()