50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import cv2
|
||
import numpy as np
|
||
import matplotlib.pyplot as plt
|
||
|
||
# 加载地图图片
|
||
image_path = 'map.png' # 替换为你的地图图片路径
|
||
image = cv2.imread(image_path)
|
||
if image is None:
|
||
raise FileNotFoundError("地图图片未找到,请检查路径!")
|
||
|
||
# 转换为RGB格式,方便使用matplotlib显示
|
||
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||
|
||
# 创建一个函数,在指定像素坐标画圆
|
||
def draw_circle(img, coordinates, color=(255, 0, 0), radius=10, thickness=2):
|
||
"""在给定图片上画圆"""
|
||
x, y = coordinates
|
||
cv2.circle(img, (x, y), radius, color, thickness)
|
||
return img
|
||
|
||
# 复制地图以进行标注
|
||
annotated_image = image_rgb.copy()
|
||
|
||
while True:
|
||
try:
|
||
# 用户输入像素坐标
|
||
user_input = input("请输入像素坐标(格式:x,y)或输入'q'退出:")
|
||
if user_input.lower() == 'q':
|
||
print("退出程序。")
|
||
break
|
||
|
||
# 解析输入坐标
|
||
x, y = map(int, user_input.split(","))
|
||
|
||
# 检查坐标是否超出范围
|
||
if not (0 <= x < image_rgb.shape[1] and 0 <= y < image_rgb.shape[0]):
|
||
print("输入的坐标超出图片范围,请重新输入!")
|
||
continue
|
||
|
||
# 在指定位置画圆
|
||
annotated_image = draw_circle(annotated_image, (x, y))
|
||
|
||
# 使用matplotlib显示更新后的图片
|
||
plt.imshow(annotated_image)
|
||
plt.axis('off')
|
||
plt.show()
|
||
|
||
except ValueError:
|
||
print("输入格式错误,请输入像素坐标,格式为x,y,例如100,200!")
|