1.鼠标事件与TrackBar控件

1.1控制鼠标

OpenCV允许我们对窗口上的鼠标动作做出响应.

  • setMouseCallback(winname, callback, userdata) winname是窗口的名字, callback是回调函数, userdata是给回调函数的参数.

  • callback(event, x, y, flags, userdata)回调函数必须包含这5个参数. event是事件(鼠标移动, 左键, 右键等), x,y是点鼠标的坐标点, flags主要用于组合键, userdata就是上面的setMouseCallback的userdata

    鼠标事件:

    • EVENT_MOUSEMOVE 0 鼠标移动
    • EVENT_LBUTTONDOWN 1 按下鼠标左键
    • EVENT_RBUTTONDOWN 2 按下鼠标右键
    • EVENT_MBUTTONDOWN 3 按下鼠标中键
    • EVENT_LBUTTONUP 4 左键释放
    • EVENT_RBUTTONUP 5 右键释放
    • EVENT_MBUTTONUP 6 中键释放
    • EVENT_LBUTTONDBLCLK 7 左键双击
    • EVENT_RBUTTONDBLCLK 8 右键双击
    • EVENT_MBUTTONDBLCLK 9 中键双击
    • EVENT_MOUSEWHEEL 10 鼠标滚轮上下滚动
    • EVENT_MOUSEHWHEEL 11 鼠标左右滚动

    flags:

    • EVENT_FLAG_LBUTTON 1 按下左键
    • EVENT_FLAG_RBUTTON 2 按下右键
    • EVENT_FLAG_MBUTTON 4 按下中键
    • EVENT_FLAG_CRTLKEY 8 按下ctrl键
    • EVENT_FLAG_SHIFTKEY 16 按下shift键
    • EVENT_FLAG_ALTKEY 32 按下alt键
import cv2
import numpy as npdef mouse_callback(event, x, y, flags, userdata):print(event, x, y, flags, userdata)cv2.namedWindow('mouse', cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse', 640, 360)# 设置鼠标回调函数
cv2.setMouseCallback('mouse', mouse_callback, '123')# 显示窗口和背景
# 生成全黑的图片
img = np.zeros((360, 640, 3), np.uint8)
while True:cv2.imshow('mouse', img)key = cv2.waitKey(1)if key & 0xFF == ord('q'):breakcv2.destroyAllWindows()

1.2 TrackBar控件

TrackBar控件

  • createTrackbar(trackbarname, winname, value, count, onChange) 创建TrackBar控件, value为trackbar的默认值, count为bar的最大值, 最小为0
  • getTrackbarPos(trackbarname, winname) 获取TrackBar当前值

2.小项目:使用鼠标事件和TrackBar控件 实现调色板

## trackbar
import cv2
import numpy as np# 创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)
cv2.resizeWindow('trackbar', 640, 480)
# 定义回调函数
def callback(value):print(value)# 创建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(1)if key & 0xFF == ord('q'):breakcv2.destroyAllWindows()

运行后如图所示

我们尝试调整颜色


RGB三原色均可以正确显示,我们尝试任意组合一个颜色

Python机器视觉--OpenCV入门--鼠标事件与TrackBar控件(含小项目:OpenCV调色板)相关推荐

  1. 使用Python和OpenCV捕获鼠标事件,并裁剪图像

    使用Python和OpenCV捕获鼠标事件,并裁剪图像 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python和OpenCV捕获鼠标事件.还演示了如何快速裁剪和提取图像区域,这在为自己的自 ...

  2. Qt安装事件过滤器、过滤子控件事件、截获控件按键、鼠标事件

    Qt安装事件过滤器.过滤子控件事件.截获控件按键.鼠标事件 Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理. 假设我们有一个C ...

  3. python 阻止锁屏_想要自己的手机锁屏更加安全吗?python带你打造个性的锁屏控件...

    原标题:想要自己的手机锁屏更加安全吗?python带你打造个性的锁屏控件 Python是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了 ...

  4. C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值

    C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值 using System; using System.Collections.G ...

  5. jquery实现上下左右键盘监听_基于 jQuery 实现键盘事件监听控件

    最近项目里要做一个画板,需要对键盘事件进行监听,来进行诸如撤回.重做.移动.缩放等操作,因此顺手实现了一个键盘事件监听控件,期间略有收获,整理出来,希望对大家有所帮助,更希望能获得高手的指点. 1. ...

  6. WPF:鼠标拖曳、拖动控件

    效果 布局 <Grid Grid.Row="0" Name="gridChart" Margin="50,20" SizeChange ...

  7. 在Paint事件中绘制控件(边框)

    在Paint事件中绘制控件(边框) 单纯的自己记录,将来会继续添加,侥幸被大家发现了的话请不要太鄙视... private void panel4_Paint(object sender, Paint ...

  8. python八角图形绘制_(Python)从零开始,简单快速学机器仿人视觉Opencv—第四节:OpenCV处理鼠标事件...

    准备工作 使用工具:Python3.5 涉及包:cv2 numpy 涉及函数 函数:cv2.setMouseCallback() 任务开始 简单的程序,在图片上双击过的位置绘制一个圆圈 任务1.创建鼠 ...

  9. Python Opencv 实现鼠标事件(包含一个练习)——事件触发讲解·以及鼠标回调函数的实现

    文章目录 鼠标事件概述 鼠标事件发生的结构 鼠标回调函数的标准格式 opencv下包含的所有事件--包含flag和event(可以看一下,熟悉常见事件范围) 鼠标事件的实现函数 一个完整的鼠标事件由一 ...

最新文章

  1. .NET基础示例系列之十六:制做进程监视器
  2. 物体抓取位姿估計算法綜述_基于深度学习的物体抓取位置估计
  3. lampp mysql 等待响应时间很长,XAMPP 最大执行时间(max_execution_time) 问题
  4. tensorflow-Inception-v3模型训练自己的数据代码示例
  5. php toupper,jquery如何进行字母大小写转换?
  6. mysql记录操作日志
  7. poj 2696 A Mysterious Function
  8. css规则中区块block,CSS的命名方式:BEM(区块、元素、修饰符)
  9. 网页自动关机代码HTML,win10系统打开邮件显示网页html源代码如何解决
  10. linux 按日期复制文件夹,Linux 按文件日期分类文件
  11. 方便的Chrome取色插件ColorPick Eyedropper [设计, FE必备]
  12. 我眼中的ASP.NET Core之微服务 (二)
  13. Make Menuconfig详解 (配置内核选择)
  14. 【Android安全】JEB技巧汇总
  15. html中如何调整图片的对比色,风光照片如何调出冷暖对比色?后期案例分享
  16. python脚本课程_python选课脚本
  17. 依赖计算机英语作文,过度依赖电脑的英语作文
  18. 射击末世--建造者模式
  19. 你的身份证,到底绑定了多少微信账号?
  20. 1、Swoole是什么?你可以通过swoole干些什么?

热门文章

  1. 下载Poco库并在VS2013中使用
  2. WMPlayer视频播放器,AVPlayer的封装
  3. 数据是企业的无价財富——爱数备份存储柜server的初体验(图文)
  4. sql中什么意思_百度知道
  5. mtk tuning isp 调试流程
  6. 通配符证书有什么好处?
  7. Java实现简单的UDP编程
  8. 试图执行的操作不受支持解决办法
  9. 基于Detectron2模型和深度学习方法的改进森林火灾检测方法
  10. [Rust GUI]0.8.0版本iced代码示例 - checkbox