61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
|
|
import os
|
|||
|
|
import argparse
|
|||
|
|
from osgeo import ogr,gdal
|
|||
|
|
from matplotlib import pyplot as plt
|
|||
|
|
from osgeo import gdal
|
|||
|
|
import matplotlib
|
|||
|
|
import matplotlib.patches as patches
|
|||
|
|
from osgeo import gdal
|
|||
|
|
from PIL import Image
|
|||
|
|
from scipy.spatial import cKDTree
|
|||
|
|
import numpy as np
|
|||
|
|
from tools.DotaOperator import DotaObj,createDota,readDotaFile,writerDotaFile
|
|||
|
|
import argparse
|
|||
|
|
import math
|
|||
|
|
from math import ceil, floor
|
|||
|
|
|
|||
|
|
pngpath=r"D:\港口\切片结果\Geo_bc2-sm-org-vv-20231016t135315-008424-0020e8-01_3.png"
|
|||
|
|
txtpath=r"D:\港口\切片结果\Geo_bc2-sm-org-vv-20231016t135315-008424-0020e8-01_3.txt"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
pngdata=np.array(Image.open(pngpath))
|
|||
|
|
dotalist=readDotaFile(txtpath)
|
|||
|
|
|
|||
|
|
plt.figure()
|
|||
|
|
plt.imshow(pngdata)
|
|||
|
|
# 绘制每个目标的矩形框并标注坐标
|
|||
|
|
for i in range(len(dotalist)):
|
|||
|
|
# 提取x和y坐标
|
|||
|
|
x_coords = [dotalist[i].x1, dotalist[i].x2, dotalist[i].x3, dotalist[i].x4]
|
|||
|
|
y_coords = [dotalist[i].y1, dotalist[i].y2, dotalist[i].y3, dotalist[i].y4]
|
|||
|
|
|
|||
|
|
# 计算最小外接矩形(AABB)
|
|||
|
|
x_min, x_max = min(x_coords), max(x_coords)
|
|||
|
|
y_min, y_max = min(y_coords), max(y_coords)
|
|||
|
|
width = x_max - x_min
|
|||
|
|
height = y_max - y_min
|
|||
|
|
|
|||
|
|
# 绘制无填充矩形框(仅红色边框)
|
|||
|
|
rect = patches.Rectangle(
|
|||
|
|
(x_min, y_min), width, height,
|
|||
|
|
linewidth=2, edgecolor='red', facecolor='none' # 关键:facecolor='none'
|
|||
|
|
)
|
|||
|
|
plt.gca().add_patch(rect)
|
|||
|
|
|
|||
|
|
# ax.annotate(f'({x},{y})', xy=(x, y), xytext=(5, 5),
|
|||
|
|
# textcoords='offset points', fontsize=10,
|
|||
|
|
# bbox=dict(boxstyle='round,pad=0.5', fc='white', alpha=0.8))
|
|||
|
|
|
|||
|
|
# 在矩形中心标注目标编号
|
|||
|
|
center_x = sum(x_coords) / 4
|
|||
|
|
center_y = sum(y_coords) / 4
|
|||
|
|
plt.text(center_x, center_y, str(i),
|
|||
|
|
ha='center', va='center', fontsize=6, color='red')
|
|||
|
|
|
|||
|
|
|
|||
|
|
plt.show()
|
|||
|
|
|
|||
|
|
|
|||
|
|
|