在opencv用鼠标绘图
时间: 2024-10-11 10:10:26 浏览: 35
在 OpenCV 中,你可以使用鼠标事件(如 cv2.setMouseCallback)结合图像窗口来实时绘制图形。以下是一个简单的步骤和示例代码,展示了如何通过点击鼠标的左键、右键和移动来绘制线条、矩形和圆:
```python
import cv2
import numpy as np
def draw_circle(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
elif event == cv2.EVENT_RBUTTONDOWN:
cv2.rectangle(img, (x, y), (x+10, y+10), (0, 255, 0), -1)
elif event == cv2.EVENT_MOUSEMOVE:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1) # 更新鼠标位置的点
# 初始化图像
img = np.zeros((500, 500, 3), dtype=np.uint8)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
# 设置鼠标回调函数
cv2.setMouseCallback('image', draw_circle)
while True:
cv2.imshow('image', img)
key = cv2.waitKey(1) & 0xFF
if key == ord('q') or key == 27: # 按 'q' 或 esc 键退出
break
cv2.destroyAllWindows()
```
在这个例子中,当你按下左键时会画圆,按下右键时会画正方形,移动鼠标时会在当前鼠标位置画一个小圆。注意这是一个基本示例,实际应用中可以根据需要调整绘制内容和事件响应。
阅读全文