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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值