zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PAT A1108 Finding Average [字符串处理]
    PAT A1013 Battle Over Cities [图的遍历]
    关于斐波那契数列的算法
    关于浏览器的事件队列
    类型与进制转换
    【待整理】python 关键字
    闭包和函数的自运行
    cookie-cart购物车
    有意思的效果——左右摇摆
    工厂模式
  • 原文地址:https://www.cnblogs.com/wangzhizhen/p/8683242.html
Copyright © 2011-2022 走看看