首页 文章 精选 留言 我的

精选列表

搜索[python],共10000篇文章
优秀的个人博客,低调大师

『OpenCV-Python』Trackbar控件的用法

**点赞 + 关注 + 收藏 = 学会了** 在 OpenCV 中,`Trackbar` 控件(滑块)是一个非常常用的 GUI 组件,用于在图像处理和计算机视觉任务中进行交互式调整参数。比如说,加载一个图片,通过一个滑块调整图片的亮度,这样便于我们用肉眼观察图片的变化。 `Trackbar` 允许用户通过拖动滑块来调整参数的值,并且会实时更新显示结果。 ![01.gif](https://developer.qcloudimg.com/http-save/yehe-9556244/21a620ec37b60f04ad0165a5cbe43934.webp) 比如上图这个例子,创建了3个 `Trackbar` 控件分别控制图片的 R、G、B 三个通道。拖拽不同通道的滑块后,图片对应的颜色也会跟着修改。 在 OpenCV 中使用 `Trackbar` 需要用到2个方法:`cv2.createTrackbar()` 和 `cv2.getTrackbarPos()`。 ## 创建滑块控件 `cv2.createTrackbar()` 用于创建一个滑块(Trackbar)控件,它接受5个参数。 ``` cv2.createTrackbar(trackbarname, winname, value, count, onChange) ``` - `trackbarname`:滑块的名称(字符串),在窗口中显示。 - `winname`:窗口的名称,滑块将被添加到这个窗口中。这个窗口必须在调用 `cv2.createTrackbar()` 之前通过 `cv2.namedWindow()` 创建。 - `value`:滑块的初始值(整数),表示滑块的默认位置。 - `count`:滑块的最大值(整数),表示滑块的可调范围。例如,设置为 255 表示滑块的范围是 0 到 255。 - `onChange`:回调函数。当滑块值发生变化时,onChange 函数会被调用。它接收滑块的新值作为参数。如果不需要回调函数,可以传入一个空函数 nothing()。 ## 获取滑块当前值 `cv2.getTrackbarPos()` 用于获取滑块的当前位置(即当前的值),它接受2个参数。 ``` cv2.getTrackbarPos(trackbarname, winname) ``` - `trackbarname`:要获取值的滑块名称。该名称必须与创建滑块时使用的名称一致。 - `winname`:包含滑块的窗口名称。该窗口应该已经通过 `cv2.namedWindow()` 创建。 ## 举个例子 使用 `numpy` 要创建一个 480 x 640 像素的图片,这个图片每个像素有3个通道,分别代表R(红)、G(绿)、B(蓝)。用鼠标滑动滑块后,图片每个像素的颜色值也会随之发生变化。 ![01.gif](https://developer.qcloudimg.com/http-save/yehe-9556244/fd6b750a7133b634909a69192d7c44b9.webp) ``` import cv2 import numpy as np # 初始化默认的RGB通道值 r = 0 g = 0 b = 0 # 回调函数,当滑块值变化时触发 def nothing(x): pass # 创建一个窗口 cv2.namedWindow('RGB Control') # 创建三个滑块,分别控制 RGB 通道的值 cv2.createTrackbar('Red', 'RGB Control', 0, 255, nothing) cv2.createTrackbar('Green', 'RGB Control', 0, 255, nothing) cv2.createTrackbar('Blue', 'RGB Control', 0, 255, nothing) # 循环显示窗口,实时更新 TrackBar 的值 while True: # 获取滑块的当前值 r = cv2.getTrackbarPos('Red', 'RGB Control') g = cv2.getTrackbarPos('Green', 'RGB Control') b = cv2.getTrackbarPos('Blue', 'RGB Control') # 创建一个新的图像,初始为全黑(0, 0, 0) img = np.zeros((480, 640, 3), dtype=np.uint8) # 设置图像的RGB通道值 img[:, :, 0] = b # 蓝色通道 img[:, :, 1] = g # 绿色通道 img[:, :, 2] = r # 红色通道 # 显示图像 cv2.imshow('RGB Control', img) # 按 'ESC' 键退出 if cv2.waitKey(1) & 0xFF == 27: break # 关闭窗口 cv2.destroyAllWindows() ``` 需要注意,在 OpenCV 中,图片里的像素通道排序是 [B, G, R],和我们平时说的“RGB”排序是反过来的。切记切记。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册