为程序界面添加滑动条--createTrackbar()

来源:互联网 发布:人工智能分析用户行为 编辑:程序博客网 时间:2024/05/22 17:19

createTrackbar( )

作用:创建一个滚动条并把它附加到特定的窗口中。

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

参数:

 trackbarname:在标签中显示的文字(提示滑动条的用途);

winname:创建的滑动条要放置窗体的名字;

value:整形变量的可变的指针,它的值反映了滚动条的位置,在创建的时候,滚动条的位置由这个变量决定;

count:滚动条的最大位置,最小位置一般是0;

onChange:每次滚动条改变位置都会调用指向该功能的指针,这个功能的原型为void Foo(int,void*);如果回调函数是个空指针,就没有回调被调用,但是唯一的值被更新;

userdata:传递给回调函数的用户数据,它可以不用全局变量而处理滚动条的事件。


addWeighted()

作用:计算两个数组的加权和。

形式:void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);

参数:

src1:输入的第一个数组;

alpha:第一个输入数组元素的权重;

src2:输入的第二个数组,和 src1大小、通道相同;

beta:第二个输入数组元素的权重;

gamma:给每个加权和加的标量;

dst:输出的数组;

dtype:输出数组的可选的深度,当和输入数组深度相同时取-1,即src1.depth();


<span style="font-size:14px;">#include <cv.h>#include <highgui.h>using namespace cv;/// 全局变量的声明与初始化const int alpha_slider_max = 100;int alpha_slider;double alpha;double beta;/// 声明存储图像的变量Mat src1;Mat src2;Mat dst;/** * @function on_trackbar * @定义响应滑动条的回调函数 */void on_trackbar( int, void* ){ alpha = (double) alpha_slider/alpha_slider_max ; beta = ( 1.0 - alpha ); addWeighted( src1, alpha, src2, beta, 0.0, dst); imshow( "Linear Blend", dst );}int main( int argc, char** argv ){ /// 加载图像 (两图像的大小与类型要相同) src1 = imread("../../images/LinuxLogo.jpg"); src2 = imread("../../images/WindowsLogo.jpg"); if( !src1.data ) { printf("Error loading src1 \n"); return -1; } if( !src2.data ) { printf("Error loading src2 \n"); return -1; } /// 初始化为零 alpha_slider = 0; /// 创建窗体 namedWindow("Linear Blend", 1); /// 在创建的窗体中创建一个滑动条控件 char TrackbarName[50]; sprintf( TrackbarName, "Alpha x %d", alpha_slider_max ); createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar ); /// 结果在回调函数中显示 on_trackbar( alpha_slider, 0 ); /// 按任意键退出 waitKey(0); return 0;}</span>




0 0
原创粉丝点击