OpenCV_006-OpenCV 轨迹栏作为调色板
本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的 GUI 功能 部分,这个部分的主要内容如下:
- 图像操作入门
学习加载一幅图像,显示它,并保存它 - 视频入门
学习播放视频,从摄像头捕捉视频,以及写入视频 - OpenCV 中的绘制功能
学习通过 OpenCV 绘制线、矩形、椭圆形和圆形等等 - 鼠标作为画笔
用鼠标画东西 - 轨迹栏作为调色板
创建轨迹栏以控制某些参数
目标
- 学习将轨迹栏绑定到 OpenCV 窗口
- 我们将学习这些函数: cv.getTrackbarPos(),cv.createTrackbar() 等等。
代码演示程序
这里我们将创建一个简单的应用程序,它展示我们指定的颜色。这个应用中有一个展示颜色的窗口,以及三个轨迹栏以分别指定 B,G 和 R 颜色值。我们滑动轨迹栏并相应地更改窗口颜色。默认情况下,初始颜色将设置为黑色。
对于 cv.createTrackbar() 函数,第一个参数是轨迹栏的名称,第二个参数是它所附加的窗口的名称,第三个参数是默认值,第四个是最大值,第五个是每次轨迹栏值更改时执行的回调函数。回调函数始终只有一个参数,即轨迹栏的位置。因而在轨迹栏事件的回调函数中,无法区分是绑定的哪个轨迹栏实例所产生的事件。
轨迹栏的另一个重要应用是用作按钮或开关。OpenCV,默认情况下,没有按钮功能。因此,我们可以使用轨迹栏来获得这种功能。在我们的应用程序中,我们创建一个开关,应用程序只要在这个开关打开时才运行,否则屏幕总是黑色的。
def trackbar():# Create a black image, a windowimg = np.zeros((300, 512, 3), np.uint8)switch = Trueblue = 0green = 0red = 0def callback_factory(user_data):def callback(pos):nonlocal switch, blue, green, redif user_data == 'S':if pos == 0:switch = Falseelse:switch = Trueelif user_data == 'B':blue = poselif user_data == 'G':green = poselif user_data == 'R':red = posif not switch:img.fill(0)else:img[:] = (blue, green, red)cv.imshow('image', img)return callbackcv.namedWindow('image')# create trackbars for color changecv.createTrackbar('R', 'image', 0, 255, callback_factory('R'))cv.createTrackbar('G', 'image', 0, 255, callback_factory('G'))cv.createTrackbar('B', 'image', 0, 255, callback_factory('B'))# create switch for ON/OFF functionalityswitch = '0 : OFF \n1 : ON'cv.createTrackbar(switch, 'image', 0, 1, callback_factory('S'))cv.imshow('image', img)while True:k = cv.waitKey(1) & 0xFFif k == 27:breakcv.destroyAllWindows()
在这个示例程序中,为了及时响应发生的事件,同时也为了降低轮询各个轨迹栏的状态所带来的开销,图像的状态的改变以及绘制,直接在回调中完成。
这里为所有轨迹栏实例只实现了一个回调函数,为了能够在轨迹栏事件回调中区分事件是发生在哪个轨迹栏上的,而通过另一个函数,将回调函数包为闭包。
这里为了演示 cv.getTrackbarPos() 函数的用法,而在回调函数里用了这个函数,但这个调用也可以替换为回调函数的参数中的 pos。
这个应用程序的截屏看起来像下面这样:
OpenCV 提供的窗口等 GUI 接口,仅仅用于一般的示例程序编写,这部分接口的能力和灵活性与 GTK 或 QT 这种专业的 GUI 开发库所提供的能力和灵活性相差甚远。这部分的功能也不是 OpenCV 库的核心,因而也并不值得投入太大的时间和精力来学习。
参考文档
Trackbar as the Color Palette
Done.
OpenCV_006-OpenCV 轨迹栏作为调色板相关推荐
- opencv04:鼠标作为画笔以及轨迹栏作为调色板
目标 了解如何在OpenCV中处理鼠标事件 cv2.setMouseCallback() 了解将轨迹栏固定到OpenCV窗口 cv2.getTrackbarPos() cv2.createTrackb ...
- 轨迹栏作为调色板 | 九
目标 了解将轨迹栏固定到OpenCV窗口 您将学习以下功能:cv.getTrackbarPos,cv.createTrackbar等. 代码演示 在这里,我们将创建一个简单的应用程序,以显示您指定的颜 ...
- OpenCV中的GUI特性 —— 绘图+鼠标画笔+轨迹栏调色板
OpenCV中的GUI特性 -- 绘图+鼠标画笔+轨迹栏调色板 这一部分内容主要包括OpenCV的绘图函数.鼠标回调函数与画图的结合和轨迹栏的使用,绘图函数的传参是关键,鼠标回调函数也是一个相当重要的 ...
- OpenCV基本线性变换轨迹栏的实例(附完整代码)
OpenCV基本线性变换轨迹栏的实例 OpenCV基本线性变换轨迹栏的实例 OpenCV基本线性变换轨迹栏的实例 OpenCV基本线性变换轨迹栏的实例(附完整代码) #include "op ...
- [opencv] 练习题实现 使用轨迹栏创建颜色和画笔半径可调的Paint应用程序。有关绘制的信息,请参阅有关鼠标处理的先前教程。
1.问题背景 opencv 官方手册 文档 练习题 使用轨迹栏创建颜色和画笔半径可调的Paint应用程序.有关绘制的信息,请参阅有关鼠标处 理的先前教程. 2.代码部分 另外一个官方demo留下的作业 ...
- opencv python下载_[福利] OpenCV4 Python 最新中文版官方教程来了(附下载)
教程简介 OpenCV 是计算机视觉中经典的专用库,然而其中文版官方教程久久不来.近日,一款最新 OpenCV4.1 版本的完整中文版官方教程出炉,读者朋友可以更好的学习了解 OpenCV 相关细节. ...
- basler相机参数简要中文说明_附下载| OpenCV最新中文版官方教程
OpenCV是计算机视觉中经典的专用库,然而其中文版官方教程久久不来.近日,一款最新OpenCV4.1 版本的完整中文版官方教程出炉,读者朋友可以更好的学习了解OpenCV相关细节.教程根据官方提供的 ...
- OpenCV 中的绘制功能
本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的 GUI 功能 部分,这个部分的主要内容如下: 图像操作入门 学习加载一幅图像,显示它,并保存它 视频入门 学习播放视频,从 ...
- opencv python教程-OpenCV4 Python 最新中文版官方教程来了(附下载)
教程简介 OpenCV 是计算机视觉中经典的专用库,然而其中文版官方教程久久不来.近日,一款最新 OpenCV4.1 版本的完整中文版官方教程出炉,读者朋友可以更好的学习了解 OpenCV 相关细节. ...
最新文章
- Firefox显示 您的链接不安全 的解决办法
- linux的yum update命令
- 部署harbor1.2.0开启ldap验证
- 世界定级 企业即时通讯软件
- window.location.href和window.location.replace
- 解决安装XAMPP 浏览器输入localhost 出现404错误的问题
- 【 VS 插件开发 】三、Vs插件简单功能的实现
- java 表格布局_Java怎样把表格放在绝对定位的面板上
- python人脸识别代码实现
- T32 获取电脑Product ID
- MATLAB 剔除异常点
- java生成不重复8位数字_如何生成8位随机不重复的数字编号
- 深度分析: Google 和 Apple 从来就不是死对头
- python输出间隔符_python print 使用分隔符 或行尾符
- 艾美智能影库服务器ip,艾美影库 篇一:艾美影库 | 精评丨性能与资源可兼得 艾美MS-200 高清影库...
- 此次告别ed2k链接文件下载烦恼
- 小狐狸对于个人职业规划的思考
- jsjs调用app下载或者打开app 实现有所变动
- 程序员进阶知识点!java链表ListNode
- Link3D-基于cocos3d的连连看游戏(第一篇)
热门文章
- 案例_文件下载_代码实现
- tomcat_部署项目的方式
- mysql日期/时间转换为字符串
- SpringBoot高级-任务-邮件任务
- 创建用户赋权限_MySQL实战第84篇:MySQL数据库添加用户和赋权限,在8.0版本!
- spring 依赖注入总结
- 13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复
- Jquery+php+ajax实现表单异步提交,动态添加回复评论
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game
- Llama-impala on yarn的中间协调服务