| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 番外5. Python OpenCV 中滑动条详细说明与常见问题解决方案 -> 正文阅读 |
|
[人工智能]番外5. Python OpenCV 中滑动条详细说明与常见问题解决方案 |
本系列专栏写作方式本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级、中级、高级知识。 5. Python OpenCV 中滑动条详细说明与常见问题解决方案滑动条在 OpenCV 相关案例中使用场景非常丰富,很多时候都需要借助于滑动条进行相关参数的获取。 掌握滑动条,只需要掌握 cv2.createTrackbar 与 cv2.getTrackbarPos 两个函数即可。 以上两个函数的原型,可以直接通过 help 函数查阅,本系列专栏对于函数原型只做简单说明
其中 cv2.createTrackbar 函数参数丰富一些,cv2.getTrackbarPos 函数是其子级。 接下来通过一个简单的案例,实现滑动条的基本应用,拖动改变窗口中某矩形的颜色。
如果在代码编写过程中出现了如下 BUG,缺少参数:
该 BUG 表示 cv2.createTrackbar 函数中缺少了最后一个 onChange 参数,添加该参数即可,参数指向的函数体可以为空。 代码运行之后的动图效果如下: cv2.createTrackbar 函数中 onChange 参数相关问题解决方案在互联网上所有的中文资料中进行检索,会发现有一个知识点在 cv2.createTrackbar 函数的应用中经常被忽略,这个内容就是 onChange 参数,该参数的官方说明如下:
这里要注意一个细节的地方,在 OpenCV C++ 编写的时候,这个函数里面多一个参数,叫做 userdata ,也就是说 C++ 中此函数的原型如下:
但是 Python 对其进行了整合,通过一个参数完成两个数据值的操作,这样其实我们在进行每一次拖动滑动条的时候,都可以对其进行相应的操作。 修改代码如下,篇幅关系,只修改 nothing 函数部分,运行代码会出现下图所示内容:
甚至我可以直接调整代码逻辑,将绘制矩形的操作放到滚动条的回调函数中,具体代码与说明如下:
这种逻辑具备之后,我们就可以将滑动条设计成一个开关,拖动到不同值,可以呈现不同的效果。 更多细节,可以继续取阅读手册相关内容,访问地址 OpenCV 中拆分滑动条与图片窗口在实际编码过程中,建议将滑动条窗口与图片窗口进行拆分展示,便于调整各参数。 例如下面一个手动调参实现二值化的操作(后续文章会涉及到)。
以上代码运行之后,会呈现一种非常便捷的操作,拖动一个窗口,在另一个窗口中可以动态的呈现对应变化。 这个地方编码的时候有一个注意事项,即 cv2.namedWindow(“HSV”, cv2.WINDOW_AUTOSIZE) 函数部分,请使用 cv2.WINDOW_AUTOSIZE 值,如果不使用该值,很容易造成滑动条窗口乱版的情况,或者窗口参数分布不均匀情况。 最后再次强调滑动条的另一个作用,转换按钮。毕竟在 OpenCV 中不存在按钮函数,使用带有固定值的滑动条可以有效的解决该问题。 使用代码如下所示即可:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 20:21:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |