opencv3 二.trackbar(滑动条)

opencv3 通过滑动条 trackbar (GUI控件)实现比较简单的用户的数据交互。

创建滑动条的函数是 createTrackbar();

int createTrackbar(const String& trackbarname, const String& winname,
                              int* value, int count,
                              TrackbarCallback onChange = 0,
                              void* userdata = 0);

有6个参数,第一个参数是 创建的滑动条的 名字;第二个参数是 滑动条附着的窗口名字,即滑动条控件的父窗体;第三个参数是滑动条的当前值,是指针类型的,因为要往里面写入数据;第四个参数是 滑动条的最大值,滑动条的最小值为 0;第五个参数是 回掉函数的指针,关于回掉函数,如果接触过win32编程的肯定很熟悉了;第六个参数是 要传给回掉函数的 数据。

在opencv3 中 回掉函数的 格式为 void FuncName(int value, void* paramer);

下面是参考网上教程做的一个 滑动条的 例子:

#include <core.hpp>
#include <highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;

Mat img1, img2, img3;
string framName = "frame";

//回掉函数
void on_Change(int value, void* paramer)
{
    addWeighted(img1,value/100.0,img2,1.0-value/100.0,0.0,img3);
    //addWeighted 函数的功能是 按照指定的 参数,合成两张图片,并且写入到 第三张图片中
    //这里 要合成的 两张原图片为 img1和img2,img3为合成的结果
    //另外两个参数为 [0,1]的合成参数(透明度)
    imshow(framName,img3);
    cout << value << endl;
}

int main()
{    
    img1 = imread("5.jpg");
    img2 = imread("3.jpg");
    namedWindow(framName);
    int value;
    //创建滑动条
    createTrackbar("mytracbar", framName, &value, 100, on_Change, NULL);

    waitKey();
}

下面是效果图:

imageimage

原文地址:https://www.cnblogs.com/wangzhizhen/p/8683242.html