add prompt; ggb process script

This commit is contained in:
abnerhexu
2026-01-12 21:15:02 +08:00
parent 687e20c96a
commit 0ddd0f894e
3 changed files with 78 additions and 0 deletions

View File

@@ -85,6 +85,8 @@ Tips for you to finish task in the most efficient way:
4. Getting entities nearby do not always effective. You have only limited sensor range. Using /targets API to get targets and /obstacles API to get obstacles is more effective.
5. If battery is below 30, find the nerest waypoint, go there and land, then charge to 100.
6. Reaching to a higher latitude can help you see targets, but do not exceed the drone's limit.
7. We put your answer to langchain, so if you want to return {{ or }}, return double of the characters.
8. Cannot move from current status: DroneStatus.IDLE means you need to take off first then move.
Begin!

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

76
template/maps/process.py Normal file
View File

@@ -0,0 +1,76 @@
import cv2
import numpy as np
def extract_green_polygons(image_path):
# 1. 读取图片
img = cv2.imread(image_path)
if img is None:
print("无法读取图片")
return []
# 获取图片尺寸
height, width = img.shape[:2]
# 定义目标坐标系范围
target_w, target_h = 1465, 715
# 2. 转换颜色空间到 HSV 以便提取绿色
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义绿色的 HSV 范围
lower_green = np.array([35, 20, 200])
upper_green = np.array([85, 255, 255])
# 3. 创建掩膜 (Mask)
mask = cv2.inRange(hsv, lower_green, upper_green)
# 4. 图像形态学处理
kernel = np.ones((3,3), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
# 5. 查找轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
polygons = []
for i, contour in enumerate(contours):
# 过滤掉太小的区域
if cv2.contourArea(contour) < 100:
continue
points = []
# 6. 坐标转换
for point in contour:
px, py = point[0]
# 【修改点1】这里显式转换成 float(),去除 numpy 类型包裹
# X 轴转换: 线性缩放
new_x = float((px / width) * target_w)
# Y 轴转换: 图像坐标系 -> 笛卡尔坐标系
new_y = float(((height - py) / height) * target_h)
# 保留两位小数
points.append((round(new_x, 2), round(new_y, 2)))
polygons.append({
"id": i,
"vertex_count": len(points),
"coordinates": points
})
return polygons
# --- 使用说明 ---
results = extract_green_polygons("golden_gate_bridge.png")
if not results:
print("未找到多边形或图片读取失败")
else:
for poly in results:
print(f"--- 多边形 ID: {poly['id']} (顶点数: {poly['vertex_count']}) ---")
# 【修改点2】遍历坐标列表每行输出两个数字 (x y)
for x, y in poly['coordinates']:
print(f"{x}, {y}")
print("") # 每个多边形之间空一行,方便区分