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

Python学习笔记第七十九天

OpenCV轨迹栏

cv.getTrackbarPoscv.createTrackbar 是 OpenCV 库中用于创建和获取跟踪条位置的函数。这些函数通常用于在视频处理或图像处理应用程序中创建用户界面,以允许用户交互地调整某些参数或控制某些功能。cv.getTrackbarPoscv.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
相关推荐
ouliten3 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
智驱力人工智能3 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
孞㐑¥4 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
八零后琐话4 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
光泽雨5 小时前
检测阈值 匹配阈值分析 金字塔
图像处理·人工智能·计算机视觉·机器视觉·smart3
Gary Studio5 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice5 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
青春不朽5125 小时前
Scrapy框架入门指南
python·scrapy