opencv鼠标左键画圆,按下鼠标右键切换绘制模式,鼠标左键按下可以绘制圆或矩形框
时间: 2024-10-10 14:11:13 浏览: 41
opencv鼠标响应事件代码
在OpenCV库中,你可以利用基本图形操作功能来实现在图像上通过鼠标事件绘制圆和矩形的功能。通常这涉及到创建一个窗口,并在窗口上绑定鼠标回调函数。下面是一个简化的步骤:
1. 导入必要的OpenCV模块和Python控制台交互库:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
```
2. 创建一个窗口,并设置鼠标回调函数 `onmouse`:
```python
def onmouse(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN: # 左键点击
if mode == 'circle':
center = (x, y)
radius = 50 # 示例半径,可以根据需要调整
cv2.circle(img, center, radius, (0, 255, 0), -1) # 绘制绿色圆形
elif mode == 'rectangle':
rectangle = (x, y, 0, 0) # 初始化矩形位置和大小
cv2.rectangle(img, rectangle, (0, 0, 255), 2) # 绘制蓝色矩形
elif event == cv2.EVENT_RBUTTONDOWN: # 右键点击
mode = 'circle' if mode == 'rectangle' else 'rectangle'
print(f"Mode switched to {mode}")
img = np.zeros((500, 500, 3), dtype=np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', onmouse, img)
while True:
cv2.imshow('image', img)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
cv2.destroyAllWindows()
```
在这个例子中,当你按住鼠标左键时,会根据当前模式(默认为圆形)绘制图形;按右键则切换模式。按下 'q' 键退出程序。
阅读全文