Opencv中的滑动条的创建和使用

Ps:素材来源:opencv编程,目的是记录自己的学习过程。

一,创建滑动条:createTrackbar()

1)createTrackbar()函数是用来创建一个具有特定名称和范围的轨迹条。

  • 第一个参数,轨迹条的名字,用来代表我们创建的轨迹条。
  • 第二个参数,窗口的名字,表示轨迹条会依附在哪个窗口上。
  • 第三个参数,表示滑块的位置。
  • 第四个参数,表示滑块可以达到的最大位置的值。
  • 第五个参数,是指向回调函数的指针。
  • 第六个参数,用户传给回调函数的数据,默认值为0,假如第三个参数是全局变量则可不用管。

createTrackbar函数使用的小例子

createTrackbar(“对比度:”,“【效果窗口】”,"&g_nContrastValue",“300”,on_Change)

二,createTrackbar()与 Canny结合的具体使用
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>using namespace cv;
using namespace std;
int thresholds = 50;
Mat image,srcimage;void canny_track(int, void*)
{Mat result;Canny(srcimage, result, thresholds, thresholds * 3, 3);imshow("边缘检测", result);
}int main()
{image = imread("dota.jpg");if (!image.data){return 0;}cvtColor(image, srcimage, COLOR_BGR2GRAY);namedWindow("边缘检测", WINDOW_AUTOSIZE);createTrackbar("阈值", "边缘检测", &thresholds, 300, canny_track);waitKey(0);return 0;
}

效果展示

三,一个完整的例子,演示如何用轨迹条来控制两幅图像的Alpha的混合
#include<opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"using namespace cv;#define WINDOW_NAME "[线性混合示例]"   //窗口的宏定义//--------------全局变量--------------//
const int g_nMaxAlphaValue = 100;//Alpha的最大值
//alpha通道是一个8位的灰度通道,2^8=256,该通道用256级灰度来记录图片中的透明信息,定义透明、不透明和半透明区域,其中白表示不透明,黑表示透明,灰表示半透明。
int g_nAlphaValueSlider;//滑动条对应的变量
double g_dAlphaValue;
double g_dBetaValue;//声明存储图像的变量
Mat g_srcimage1,g_srcimage2, g_dstImage;void on_Trackbar(int,void*)
{//求出当前的Alpha值相对于最大值的比例g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;//则beta值为1减去alpha的值g_dBetaValue = (1 - g_dAlphaValue);//根据alpha和beta的值进行混合addWeighted(g_srcimage1, g_dAlphaValue, g_srcimage2, g_dBetaValue, 0.0, g_dstImage);//显示效果图imshow(WINDOW_NAME, g_dstImage);}int main(int argc,char** argv) {//加载两张一样大小的照片g_srcimage1 = imread("1.png");g_srcimage2 = imread("2.png");if (!g_srcimage1.data ){printf("第一张图片读取错误\n");return  -1;}if (!g_srcimage2.data){printf("第二张图片读取错误\n");return  -1;}//设置滑动条的值为70g_nAlphaValueSlider = 70;//创建窗体namedWindow(WINDOW_NAME,WINDOW_NORMAL );//创建滑动条控件char TrackbarName[50];sprintf_s(TrackbarName, "透明值 %d", g_nMaxAlphaValue);createTrackbar(TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar);on_Trackbar(g_nAlphaValueSlider, 0);waitKey(0);return 0;
}

效果展示


图片资源:


【火同学】OPencv学习笔记——滑动条的创建和使用相关推荐

  1. OpenCV学习——实现滑动条式调色板

    通过滑动条来控制R.G.B这3个颜色的值,从而调配出各种颜色.滑动条式调色板的目标有以下两个: 窗口显示颜色,3个滑动条来设置R.G.B的值: 当滑动滑动条时,窗口颜色实时发生改变,默认窗口为黑色. ...

  2. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  3. OpenCV学习笔记(十七):查找并绘制轮廓:findContours(),drawContours(),approxPolyDP()

    OpenCV学习笔记(十七):查找并绘制轮廓:findContours() 1.findContours() 函数 该函数使用Suzuki85算法从二值图像中检索轮廓.轮廓线是一种用于形状分析.目标检 ...

  4. OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

    OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold() 一.定义: 1)固定阈值操作 double threshold( InputArray src, ...

  5. OpenCV学习笔记(九): 漫水填充:floodFill()

    OpenCV学习笔记(九): 漫水填充:floodFill() 定义: 漫水填充法是一种用特定的颜色填充联通区域(自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色)通过设置可连通像素的上下限 ...

  6. 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...

    (7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...

  7. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法...

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  8. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  9. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

最新文章

  1. cmd删除oracle监听,oracle数据库监听删除
  2. 给gridview动态生成radiobutton添加OnCheckedChanged监听函数
  3. linux 初始化内存管理_Linux内存管理第二章 -- Describing Physical Memory
  4. boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成
  5. Jinja的基础知识
  6. java data jpa_Spring Data JPA(一)简介
  7. linux安全模式改文件,嵌入式Linux的安全模式设计 - 嵌入式操作系统 - 电子发烧友网...
  8. RabbitMQ延迟消息的极限是多少?
  9. mysql树节点路径,关于mysql:从使用物化路径编码树的表中选择,按深度优先排序(无递归/ ltree)...
  10. 读书笔记《Java开发技术-在架构中体验设计模式和架构之美》
  11. STC89C52 VS1838红外接收器自制家庭遥控灯开关
  12. 对接支付宝APP支付后端实现最详细教程
  13. Android 自定义圆形进度条带图片旋转
  14. 利率上浮100bp是什么意思,利率浮动值60BP什么意思
  15. gird和flex布局
  16. Java课设设计-家庭财务管理系统
  17. python数据类型有序无序,python数据类型有序无序_python中的有序和无序类别变量...
  18. 让你的网站支持手机二维码登录
  19. php 元字符与转义,正则表达式中普通转义字符和元字符
  20. wms仓库管理系统,进销存和ERP系统三者之间联系

热门文章

  1. kindle使用入门
  2. Web前端工程师学习路径图,你掌握了多少?
  3. 弹性裸金属服务器EBM
  4. windows防火墙开启后,设置准入端口
  5. windows 防火墙解除或禁止ping方法
  6. adguard没有核心 core no_树莓派安装AdGuard Home屏蔽广告
  7. BT通信中数据下载的分析和实现
  8. IDaaS储备知识5 - 扫码登录
  9. 二字动词 复盘赋能_落地、赋能、共创、共建、复盘,互联网圈的漂亮词儿,你懂几个?...
  10. VC/MFC 从WebBrower 中获取 HTML 和文本