openCV滑动条TrackBar事件实例

来源:互联网 发布:乐高ev3大象编程 编辑:程序博客网 时间:2024/06/05 22:48

1.原理

函数原型:
int createTrackbar(const string& trackname,const string& winname,int *value,int count,TrackbarCallback onChange=0,void * userdata=0);
  • trackname为滑动条名字
  • winname父窗口的名字
  • value表示滑块的位置
  • count为滑块最大值
  • onChange是回调函数(每次滑块动时调用)函数原型为void xxx(int,void*);第一个参数为轨迹条位置。第二个为用户数据(第6个值),若为NULL,表示没有函数
  • userdata为用户传给回调函数的值,用来处理轨迹函数,如果第三个参数value使用的是全局变量的话,这值忽略

2.实例

#include <cv.h>#include <highgui.h>#include <iostream>using namespace cv;using namespace std;int trackbar_value;const int trackbar_max = 100;double alpha_value,beta_value;Mat imgsrc1,imgsrc2,dstimg;void trackbar_cb(int,  void* ){    alpha_value=(double) trackbar_value/trackbar_max;    beta_value=(1.0-alpha_value);    //根据alpha和beata的值进行线性融合    addWeighted(imgsrc1,alpha_value,imgsrc2,beta_value,0.0,dstimg);    imshow("TRACKBAR",dstimg);}int main(int argc,char** argv){    imgsrc1 = imread(argv[1]);    imgsrc2 = imread(argv[2]);    trackbar_value = 40;    namedWindow("TRACKBAR",1);    char trackbarname[50];    sprintf(trackbarname,"透明值 ");    //creat trackbar    createTrackbar(trackbarname,"TRACKBAR", &trackbar_value, trackbar_max, trackbar_cb);    trackbar_cb(trackbar_value,0);    waitKey(0);    return 0;}
输出结果:
          
实验图像
          
结果图像

原创粉丝点击