用python实现在地址为"C:\\Users\\11508\\Desktop\\2024-03\\X.bmp"的图像上画两个圆形,通过长按鼠标左键拖拽可移动圆形,并能实时显示两个圆心的坐标以及坐标差
时间: 2024-04-15 14:23:45 浏览: 91
Python库 | jupyter-desktop-server-0.1.2.tar.gz
你可以使用Python的OpenCV库来实现在图像上画圆形,并通过鼠标事件来实现拖拽移动圆形的功能。下面是一个示例代码:
```python
import cv2
# 定义两个圆心的初始坐标
center1 = (100, 100)
center2 = (200, 200)
# 定义两个圆的半径
radius = 50
# 定义鼠标事件的回调函数
def mouse_callback(event, x, y, flags, param):
global center1, center2
# 长按鼠标左键拖拽时更新圆心坐标
if event == cv2.EVENT_LBUTTONDOWN:
if abs(x - center1) <= radius and abs(y - center1) <= radius:
center1 = (x, y)
elif abs(x - center2) <= radius and abs(y - center2) <= radius:
center2 = (x, y)
# 创建图像窗口并设置鼠标事件回调函数
cv2.namedWindow("Image")
cv2.setMouseCallback("Image", mouse_callback)
while True:
# 创建一个空白图像
image = np.zeros((500, 500, 3), dtype=np.uint8)
# 在图像上画两个圆形
cv2.circle(image, center1, radius, (0, 0, 255), -1)
cv2.circle(image, center2, radius, (0, 255, 0), -1)
# 计算两个圆心的坐标差
diff = (center2 - center1, center2 - center1)
# 在图像上显示圆心坐标和坐标差
cv2.putText(image, f"Center 1: {center1}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
cv2.putText(image, f"Center 2: {center2}", (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
cv2.putText(image, f"Difference: {diff}", (10, 110), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 显示图像
cv2.imshow("Image", image)
# 按下ESC键退出循环
if cv2.waitKey(1) == 27:
break
# 关闭窗口
cv2.destroyAllWindows()
```
请注意,上述代码中的路径"C:\\Users\\11508\\Desktop\\2024-03\\X.bmp"是一个示例路径,你需要将其替换为你实际的图像路径。此外,你需要安装OpenCV库才能运行上述代码。
阅读全文