计算机视觉基础6---响应鼠标事件和使用跟踪栏
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.响应鼠标事件# 鼠标回调函数基本格式:def mouseCallback(event, x, y, flags, param):pass# 参数说明:# 1.mouseCallback:自定义函数名称;# 2.event:调用时传递给函数的鼠标事件对象;# 3.x、y为触发鼠标事件时,鼠标指针在窗
·
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。
代码编写:Jupyter Notebook。
1.响应鼠标事件
# 鼠标回调函数基本格式:
def mouseCallback(event, x, y, flags, param):
pass
# 参数说明:
# 1.mouseCallback:自定义函数名称;
# 2.event:调用时传递给函数的鼠标事件对象;
# 3.x、y为触发鼠标事件时,鼠标指针在窗口中的坐标(x, y);
# 4.flags:触发鼠标事件时,鼠标拖动或键盘按键事件,参数可设置:
# a.cv2.EVENT_LBUTTONDBLCLK:双击鼠标左键;
# b.cv2.EVENT_LBUTTONDOWN:按下鼠标左键;
# c.cv2.EVENT_LBUTTONUP:释放鼠标左键;
# d.cv2.EVENT_MBUTTONDBLCLK:双击鼠标中键;
# e.cv2.EVENT_MBUTTONDOWN:按下鼠标中键;
# f.cv2.EVENT_MBUTTONUP:释放鼠标中键;
# g.cv2.EVENT_MOUSEMOVE:鼠标移动;
# h.cv2.EVENT_MOUSEHWHEEL:滚动鼠标中键;
# i.cv2.EVENT_RBUTTONDBLCLK:双击鼠标右键;
# j.cv2.EVENT_RBUTTONDOWN:按下鼠标右键;
# k.cv2.EVENT_RBUTTONUP:释放鼠标右键;
# l.cv2.EVENT_FLAG_ALTKEY:按下alt键;
# m.cv2.EVENT_FLAG_CTRLKEY:按下ctrl键;
# n.cv2.EVENT_FLAG_LBUTTON:按住鼠标左键拖动;
# u.cv2.EVENT_FLAG_MBUTTON:按住鼠标中键拖动;
# p.cv2.EVENT_FLAG_RBUTTON:按住鼠标右键拖动;
# q.cv2.EVENT_FLAG_SHIFTKEY:按下shift键;
# 5.param:传递给回调函数的其他数据;
# 用于为图像窗口绑定鼠标事件回调函数
# cv2.setMouseCallback(wname, mouseCallback)
# 参数说明:
# wname:图像窗口名称;
# mouseCallback:鼠标回调函数名称;
import cv2 as cv
import numpy as np
img = np.zeros((480, 640, 3), np.uint8) + 255
def draw(event, x, y, flag, param):
if event == cv.EVENT_LBUTTONDBLCLK:
cv.circle(img, (x, y), 20, (255, 0, 0))
elif event == cv.EVENT_RBUTTONDBLCLK:
cv.rectangle(img, (x, y), (x + 20, y + 20), (0, 0, 255))
cv.namedWindow("drawing")
cv.setMouseCallback("drawing", draw)
while True:
cv.imshow("drawing", img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
cv.destroyAllWindows()
2.使用跟踪栏
# cv2.createTrackbar()函数创建跟踪栏
# 语法格式:cv2.createTrackbar(trackbarname, wname, value, count, onChange, userdata)
# 参数说明:
# 1.trackbarname:跟踪栏名称;
# 2.wname:图像窗口名称;
# 3.value:跟踪栏中滑块的初始位置;
# 4.count:跟踪栏最大值,最小值为0;
# 5.onChange:跟踪栏滑块位置变化时调用的回调函数名称;
# 6.userdata:传递给回调函数的其他可选数据;
# cv2.getTrackbarPos()函数用于返回跟踪栏的当前值
# 语法格式:cv2.getTrackbarPos(trackbarname, wname)
# 参数说明:
# 1.trackbarname:跟踪栏名称;
# 2.wname:图像窗口名称;
import numpy as np
import cv2 as cv
img = np.zeros((200, 400, 3), np.uint8)
def doChange(x):
b = cv.getTrackbarPos("B", "tracebar")
g = cv.getTrackbarPos("G", "tracebar")
r = cv.getTrackbarPos("R", "tracebar")
img[:] = [b, g, r]
cv.namedWindow("tracebar")
cv.createTrackbar("B", "tracebar", 0, 255, doChange)
cv.createTrackbar("G", "tracebar", 0, 255, doChange)
cv.createTrackbar("R", "tracebar", 0, 255, doChange)
while True:
cv.imshow("tracebar", img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
cv.destroyAllWindows()
更多推荐
所有评论(0)