控制鼠标相关API
- setMouseCallback(winname, callback, userdata)
- callback(event, x, y, flags, userdata)
setMouseCallback
在 OpenCV 中,setMouseCallback 函数用于设置鼠标事件的回调函数。它的调用方式如下:
cv2.setMouseCallback(windowName, onMouse, param)
其中:
- windowName 是窗口的名称,指定在哪个窗口中设置鼠标事件。
- onMouse 是鼠标事件的回调函数,它会在鼠标事件发生时被调用。
- param 是传递给回调函数的可选参数。
callback
鼠标事件的回调函数 onMouse 应该有以下形式:
def onMouse(event, x, y, flags, param):
# 处理鼠标事件的逻辑
pass
参数说明:
- event:表示触发的鼠标事件类型,可以是 cv2.EVENT_* 常量之一,如 cv2.EVENT_LBUTTONDOWN 表示左键按下事件。
- x 和 y:表示鼠标事件发生时的鼠标坐标。
- flags:表示鼠标事件的附加标志,是一个组合值,可以使用 cv2.EVENT_FLAG_* 常量进行检查,如 cv2.EVENT_FLAG_CTRLKEY 表示按下了 Ctrl 键。
- param:是在设置回调函数时传递的可选参数。
event, flags 的定义在文件 opencv-python\opencv\modules\highgui\include\opencv2\highgui.hpp
中。
OpenCV-Python setMouseCallback回调函数中图像变量img的传递方法解析
TrackBar 控件
- createTrackBar
- getTrackbarPos 获取 trackbar 的值
cv2.createTrackbar
用于在窗口中创建滑动条。
参数:
- trackbarName:滑动条的名称。
- windowName:包含滑动条的窗口的名称。
- value:滑动条的初始值。
- count:滑动条的最大值(最小值默认为0)。
- onChange:回调函数,当滑动条的值发生改变时调用。
cv2.getTrackbarPos:
用于获取滑动条的当前位置(值)。
参数:
- trackbarName:滑动条的名称。
- windowName:包含滑动条的窗口的名称。
import cv2
import numpy as np
def callback():
pass
#创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)
#创建trackbar
cv2.createTrackbar('R', 'trackbar', 0, 255, callback)
cv2.createTrackbar('G', 'trackbar', 0, 255, callback)
cv2.createTrackbar('B', 'trackbar', 0, 255, callback)
#创起家一个背景图片
img = np.zeros((480, 640, 3), np.uint8)
while True:
#获取当前trackbar的值
r = cv2.getTrackbarPos('R', 'trackbar')
g = cv2.getTrackbarPos('G', 'trackbar')
b = cv2.getTrackbarPos('B', 'trackbar')
#改变背景图片颜色
img[:] = [b, g, r]
cv2.imshow('trackbar', img)
key = cv2.waitKey(10)
if key & 0xFF == ord('q'):
break
cv2.destroyAllWindows()