Python学习笔记第七十九天(OpenCV轨迹栏)

Python学习笔记第七十九天

OpenCV轨迹栏

cv.getTrackbarPos 和 cv.createTrackbar 是 OpenCV 库中用于创建和获取跟踪条位置的函数。这些函数通常用于在视频处理或图像处理应用程序中创建用户界面,以允许用户交互地调整某些参数或控制某些功能。cv.getTrackbarPos 和 cv.createTrackbar在滑动条在许多计算机视觉任务中很有用,特别是当你想要手动设置某个参数值时。

cv.createTrackbar

cv.createTrackbar这个函数用于在窗口上创建一个滑动条。

参数说明:

  • trackbarname:滑动条的名称。
  • winname:滑动条所属的窗口名称。
  • val:滑动条的初始位置。
  • maxval:滑动条的最大位置值。
  • onChange:一个回调函数,当滑动条位置改变时被调用。
python 复制代码
import cv2

# 创建窗口
cv2.namedWindow('Trackbar Window')

# 创建跟踪条,参数包括:
# 1. 窗口名称
# 2. 跟踪条名称
# 3. 默认位置(0-100)
# 4. 最大位置(0-100)
# 5. 回调函数(可选)
trackbar = cv2.createTrackbar('Trackbar', 'Trackbar Window', 0, 100, trackbar_callback)

# 主循环,等待用户操作
while True:
    # 在这里添加其他代码,例如读取图像或视频帧等
    pass

cv.getTrackbarPos

在上面的例子中,你可以看到 cv2.createTrackbar 创建了一个名为 "Trackbar" 的跟踪条。你可以使用 cv2.getTrackbarPos 来获取当前跟踪条的位置:

参数说明:

  • trackbarname:滑动条的名称。
  • winname:滑动条所属的窗口名称。
python 复制代码
def trackbar_callback(x):
    # 在这里添加当跟踪条位置改变时要执行的代码
    pass

# ...(省略上面的代码)...

# 在回调函数中获取当前跟踪条位置
current_pos = cv2.getTrackbarPos('Trackbar', 'Trackbar Window')

在这个例子中,trackbar_callback 是一个可选的回调函数,它会在用户移动跟踪条时被调用。在这个回调函数中,你可以使用 cv2.getTrackbarPos 来获取当前跟踪条的位置。

两者合并运用

python 复制代码
import cv2 as cv  
import numpy as np  
  
# 初始化一个窗口  
window_name = 'Trackbar Demo'  
cv.namedWindow(window_name, cv.WINDOW_NORMAL)  
  
# 创建一个滑动条,位置在 (10, 50),名字为 'Slider',默认值是 0,范围是 0 到 100  
trackbar = cv.createTrackbar('Slider', window_name, 0, 100, None)  
  
while True:  
    # 获取滑动条的当前位置  
    position = cv.getTrackbarPos(trackbar)  
    print(f"Slider position: {position}")  
      
    # 为了可视化滑动条的效果,我们可以根据其位置改变图像的某些属性。这里我们简单地用一个灰度图像来演示。  
    image = np.zeros((500, 500), dtype=np.uint8)  
    cv.rectangle(image, (250, 0), (250 + int(position), 500), (255, 255, 255), -1)  
    cv.imshow(window_name, image)  
    key = cv.waitKey(1) & 0xFF  # 按任意键退出循环  
    if key == ord('q'):  # 按 'q' 退出程序  
        break  
  
cv.destroyAllWindows()

后记

今天学习的是Python OpenCV轨迹栏学会了吗。 今天学习内容总结一下:

  1. cv.createTrackbar
  2. cv.getTrackbarPos
相关推荐
揣一尾游鱼yu12 分钟前
Spring上(IOC)笔记
java·笔记·spring·ioc
荣码24 分钟前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
databook1 小时前
Pandas 与 Polars:语法、性能和资源占用方面的对比
python·数据分析·pandas
留岁1 小时前
大模型推理部署 · 学习文档
学习
威哥爱编程1 小时前
Python 智能体开发实战 10:本地跑得好好的,一并发就崩?把它做成一个能上线的服务
python·agent
威哥爱编程1 小时前
Python 智能体开发实战 09:改了提示词,到底是变好还是变坏?搭一套能打分的离线评测
python·agent
meiying88382 小时前
多快递公司快递单号批量查询接口怎么对接?Python 聚合查询实现
java·大数据·python
小李不想当小白2 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
Hello_Pyhx2 小时前
Deep-Live-Cam 源码配置思路:环境、模型与执行后端分开排查
python
张张123y3 小时前
后端第十六课:Multi-Agent 多智能体(让多个 Agent 分工协作)
大数据·数据库·人工智能·python·deepseek·dsh·agent 框架