opencv鼠标左键画圆,按下鼠标右键切换绘制模式,鼠标左键按下时可以绘制圆或矩形框
时间: 2024-10-10 09:11:40 浏览: 31
在OpenCV中,你可以利用`cv2.setMouseCallback`函数来实现这样的交互式绘图功能。当你使用鼠标左键点击屏幕时,它会响应并绘制圆或矩形。以下是基本步骤:
1. 首先,你需要导入必要的库:
```python
import cv2
import numpy as np
```
2. 然后定义一个回调函数,比如 `onmouse_event`,当鼠标事件发生时这个函数会被调用:
```python
def draw_shape(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN: # 左键按下
if flags & cv2.EVENT_FLAG_RBUTTON: # 右键按下
mode = not mode # 切换绘制模式(例如,开始绘制圆)
else:
if mode: # 当前是圆
cv2.circle(img, (x, y), radius, color, thickness)
else: # 当前是矩形
cv2.rectangle(img, (x, y), (x + w, y + h), color, thickness)
elif event == cv2.EVENT_MOUSEMOVE and flags & cv2.EVENT_FLAG_LBUTTON:
# 如果鼠标左键还在按着,更新形状的位置
pass
# 初始化变量
mode = True # 初始模式为圆形
radius = 0
w, h = 0, 0 # 矩形的宽和高
# 设置鼠标回调函数
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_shape)
while True:
# ... 显示图像并等待用户输入 ...
```
在这个例子中,我们假设`img`是你要在上面绘制的OpenCV窗口,`radius`, `w`, 和 `h` 分别表示圆的半径和矩形的尺寸。当左键按下并且右键也按下时,我们将模式从圆形切换到矩形。
阅读全文