写一个点击鼠标左键开始画圆的回调函数
时间: 2023-07-28 14:46:35 浏览: 108
好的,以下是一个基本的鼠标回调函数,可以在左键按下时开始画圆:
```python
import cv2
# 定义全局变量
center = None
drawing = False
def draw_circle(event, x, y, flags, param):
global center, drawing
if event == cv2.EVENT_LBUTTONDOWN:
# 记录圆心
center = (x, y)
drawing = True
elif event == cv2.EVENT_LBUTTONUP:
# 计算半径
radius = int(((x - center[0])**2 + (y - center[1])**2)**0.5)
drawing = False
# 绘制圆
cv2.circle(image, center, radius, (0, 255, 0), 2)
cv2.imshow("image", image)
# 读取图片
image = cv2.imread("example.jpg")
# 创建窗口并绑定回调函数
cv2.namedWindow("image")
cv2.setMouseCallback("image", draw_circle)
# 循环显示图片,等待按键退出
while True:
cv2.imshow("image", image)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
# 释放资源
cv2.destroyAllWindows()
```
在这个回调函数中,我们定义了两个全局变量 `center` 和 `drawing`,用于记录所绘制的圆的圆心和是否正在绘制圆。
在鼠标回调函数中,当左键按下时,我们记录下圆心,并将 `drawing` 设为 `True`,表示正在绘制圆。当左键释放时,我们计算出半径,并将 `drawing` 设为 `False`,表示绘制完成。然后,我们使用 `cv2.circle()` 函数绘制圆,并显示在图片上。
最后,我们创建一个窗口并绑定回调函数,循环显示图片,等待按键退出。当用户按下 `q` 键时,我们退出循环并释放资源。
阅读全文