HighGUI图形图像界面初步——滑动条的创建和使用

Posted HOU_JUN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HighGUI图形图像界面初步——滑动条的创建和使用相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

  滑动条是OpenCV动态调节参数特别好用的一种工具,它依附于窗口而存在。由于OpenCV没有实现按钮功能,所以很多时候,我们可以用仅含0-1的滑动条来实现按钮的按下于弹起效果。

1、创建滑动条:createTrackbar()函数

  这个函数往往和一个回调函数配合起来使用。

  C++ : int createTrackbar(const string & trackbarname, const string & winname, int* value, int count, TrackbarCallback onChange=0, void* userdata=0);

  参数说明:

  (1)第一个参数,轨迹条的名称;

  (2)第二个参数,窗口名称;

  (3)第三个参数,表示滑块的初始位置

  (4)第四个参数,表示滑块可达到的上限值。

  (5)第五个参数,这是一个执行回调函数的指针,当滑块位置变化时候这个函数都进行回掉。这个函数原型必须为:void XXXX(int,void*),其中第一个为轨迹位置,第二个为用户数据。NULL表示没有回调函数。

  (6)用户传给回掉函数的数据,用来处理轨迹时间。如果使用第三个参数value实参是全局变量的话,完全可以不用去管这个userdata参数。

 

  

// Trackbar.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include "opencv2\highgui\highgui.hpp"

using namespace cv;

#define WINDOW_NAME "【线性混合示例】"

const int g_nMaxAlphaValue = 100;
int g_nAlphaValueSlider;
double g_dAlphaValue;
double g_dBetaValue;

Mat g_srcImage1;
Mat g_srcImage2;
Mat g_dstImage;


void on_TrackBar(int, void*)
{
    g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;
    g_dBetaValue = (1.0 - g_dAlphaValue);
    addWeighted(g_srcImage1, g_dAlphaValue,g_srcImage2,g_dBetaValue,0.0,g_dstImage);
    imshow(WINDOW_NAME,g_dstImage);
}




int main()
{
    g_srcImage1 = imread("D:\\resuouce\\image\\scenic1.jpg");
    g_srcImage2 = imread("D:\\resuouce\\image\\scenic.jpg");
    if (!g_srcImage1.data)
    {
        printf("读取第一张图片失败\n");
        return -1;
    }

    if (!g_srcImage2.data)
    {
        printf("读取第二张图片失败\n");
        return -1;
    }

    g_nAlphaValueSlider = 70;
    namedWindow(WINDOW_NAME,1);
    char TrackbarName[50];
    memset(TrackbarName,\0,sizeof(TrackbarName));
    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;
}

 

 

---恢复内容结束---

以上是关于HighGUI图形图像界面初步——滑动条的创建和使用的主要内容,如果未能解决你的问题,请参考以下文章

opencv 1 HighGUI图形用户界面初步

OPENCV中滑动条的使用

《OpenCV3编程入门》学习笔记三:HighGUI图形用户界面

HighGUI 图形用户界面

用matlabGUI界面读取图片,滑动滚动条来调节图像亮度,用imadd函数,代码一直出错,急,求高手帮忙

滑动条的创建