OpenCV学习系列教程第二篇:轨迹条

摘要:
通过滑动轨迹栏更改颜色。对于cv对于getTrackbarPos()函数,第一个参数是:跟踪条的名称。第二个参数是:窗口的名称。第三个参数是:默认值。第四个参数是:最大值。第五个参数是:回调函数。每次更改跟踪条位置时,都会使用默认值调用回调函数。也就是说,轨迹条位置用作按钮或开关。因为默认情况下OpenCV没有这样的功能。因此,这些功能可以通过跟踪条实现。

来自opencv-python官方学习文档,本人谨做翻译和注释,以及一些自己的理解

本文由作者翻译并进行代码验证,转载请注明出处~

官方文档请参阅:https://docs.opencv.org/4.0.1/db/d5b/tutorial_py_mouse_handling.html

运行环境:

windows 10+pycharm professional 2018.3+python 3.7.1+opencv 4.0.1

目标:

1,学习如何在窗口绑定trackbar

2,学习  cv.getTrackbarPos()cv.createTrackbar()函数

案例代码:

创建一个窗口,上面有三个轨迹条,分别控制R,G,B的颜色。通过滑动轨迹条来改变颜色。默认情况下,最初的颜色是黑色。

对于cv.getTrackbarPos()函数来讲:

第一个参数是:trackbar的名字

第二个参数是:窗口的名字

第三个参数是:默认值

第四个参数是:最大值

第五个参数是:回调函数,并且当每一次trackbar的位置改变之后都调用一次

回调函数都有一个默认值,就是trackbar的位置

trackbar的另一个功能是作为按钮或者开关使用。因为OpenCV在默认情况下是没有这样的功能的。所以可以通过trackbar来实现这样的功能。

代码如下:

import numpy as np
import cv2 as cv
def nothing(x):
    pass
# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
cv.namedWindow('image')
# create trackbars for color change
cv.createTrackbar('R','image',0,255,nothing)
cv.createTrackbar('G','image',0,255,nothing)
cv.createTrackbar('B','image',0,255,nothing)
# create switch for ON/OFF functionality
switch = '0 : OFF 
1 : ON'
cv.createTrackbar(switch, 'image',0,1,nothing)
while(1):
    cv.imshow('image',img)
    k = cv.waitKey(1) & 0xFF
    if k == 27:
        break
    # get current positions of four trackbars
    r = cv.getTrackbarPos('R','image')
    g = cv.getTrackbarPos('G','image')
    b = cv.getTrackbarPos('B','image')
    s = cv.getTrackbarPos(switch,'image')
    if s == 0:
        img[:] = 0
    else:
        img[:] = [b,g,r]
cv.destroyAllWindows()

运行截图如下:

OpenCV学习系列教程第二篇:轨迹条第1张

免责声明:文章转载自《OpenCV学习系列教程第二篇:轨迹条》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle表空间知识【Crash】C++程序崩溃排查方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

opencv配置(2.49)

转载自浅墨大神http://blog.csdn.net/poem_qianmo/article/details/19809337 OpenCV2.4.9和2.4.8的配置几乎一样,唯一的区别在下文中的第五步,链接库的配置,把对应的248改成249即可。 OpenCV 3.0配置更是被简化了。和2.4.8、2.4.9的区别就是下文第五步,链接库的配置,只用...

【opencv基础】OpenCV使用Viz模块3D可视化显示

code bunny.ply /** * @file transformations.cpp * @brief Visualizing cloud in different positions, coordinate frames, camera frustums * @author Ozan Cagri Tonkal */#include <...

java+opencv实现图像灰度化

灰度图像上每个像素的颜色值又称为灰度,指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0。所谓灰度值是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值的象素数。   灰度就是没有色彩,RGB色彩分量全部相等。如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧:一个25...

[转] c# 中使用opencv进行视频捕获

简介 这个项目是关于如何从网络摄像头或者视频文件(*.AVI)中捕获视频的,这个项目是用C#和OPENCV编写的。 这将有助于那些喜欢C#和OpenCV环境的人。这个程序完全基于Visual Studio 2010 version C#.NET环境。这个程序展示了怎样用C#.NET环境的Visual Studio 2010 IDE编写OpenCV,这个...

OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常

对于OpenCV的安装 要感谢网友空晴拜小白提供的教程 链接如下: https://blog.csdn.net/sinat_36264666/article/details/73135823?ref=myread#reply 教程写的十分详细 截图什么的也很好 2 问题描述今天在安装和测试OpenCV的时候遇到了这样的问题 测试代码如下 #include...

nvidia tk1使用记录--基本环境搭建

前言   项目最开始是在X86+Nvidia(ubuntu+opencv+cuda)平台上实现,达到了期望性能,最近考虑将其移植到嵌入式平台,特别是最近nvidia出了tegra X1,基于和我们使用的gtx960相同的架构的gpu且是64位 8核心cpu,于是开始了尝试移植过程。当前TX1才出来,购买不是那么方便,于是拿它的前一代TK1进行一个最基本的评...