用python实现在地址为"C:\\Users\\11508\\Desktop\\2024-03\\X.bmp"的图像上画两个圆形,通过鼠标拖拽可移动圆形,并能实时显示两个圆心的坐标以及坐标差
时间: 2024-04-16 20:22:53 浏览: 103
你可以使用Python的OpenCV库来实现在图像上画圆形,并通过鼠标拖拽来移动圆形。以下是一个实现的示例代码:
```python
import cv2
# 定义两个圆心的初始坐标
center1 = (100, 100)
center2 = (200, 200)
# 创建一个回调函数,用于鼠标事件处理
def mouse_callback(event, x, y, flags, param):
global center1, center2
# 鼠标左键按下时更新圆心坐标
if event == cv2.EVENT_LBUTTONDOWN:
# 判断鼠标点击的位置是否在圆1内
if (x - center1) ** 2 + (y - center1) ** 2 <= 100 ** 2:
center1 = (x, y)
# 判断鼠标点击的位置是否在圆2内
elif (x - center2) ** 2 + (y - center2) ** 2 <= 100 ** 2:
center2 = (x, y)
# 加载图像
image = cv2.imread("C:\\Users\\11508\\Desktop\\2024-03\\X.bmp")
# 创建窗口并绑定鼠标事件回调函数
cv2.namedWindow("Image")
cv2.setMouseCallback("Image", mouse_callback)
while True:
# 在图像上绘制两个圆形
cv2.circle(image, center1, 100, (0, 255, 0), 2)
cv2.circle(image, center2, 100, (0, 0, 255), 2)
# 显示图像
cv2.imshow("Image", image)
# 计算两个圆心的坐标差
diff_x = center2 - center1
diff_y = center2 - center1
# 在图像上显示坐标差
cv2.putText(image, f"Diff: ({diff_x}, {diff_y})", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 按下ESC键退出循环
if cv2.waitKey(1) == 27:
break
# 关闭窗口
cv2.destroyAllWindows()
```
请注意,你需要将代码中的图像路径替换为你实际的图像路径。运行代码后,会显示一个窗口,你可以在图像上用鼠标拖拽来移动两个圆形,并实时显示两个圆心的坐标以及坐标差。
阅读全文