一、简述createTrackbar函数
1、作用:创建可调节滚动条,实现图像的亮度调节
2、c++原型:
参数一:轨迹条名字
参数二:窗口名字, 即对应namedWindow()创建窗口时填的某一个窗口名
参数三:一个指向整型的指针,表示滑块初始位置
参数四:表示滑块达到最大位置的值(滑块最小的位置的值始终为0)
参数五:指向回调函数,默认值为0;每次滑块位置改变时,这个函数都会进行回调;并且这个函数的原型必须为void XXX(int,void*);其中第一个参数是轨迹条的位置,第二个参数是用户数据(就是下面的参数六);如果回调是NULL指针,表示没有回调函数的调用,仅第三个参数value有变化。
参数六:用户传给回调函数的数据值,用来处理轨迹条事件,默认值为0;如果使用的第三个参数value实参是全局变量的话,完全可以不去管这个参数
二、代码
Mat src,dst,m;
int lightValue = 52;//定义初始的亮度
//滑动条回调函数,要在sliderBar前先定义
static void on_track(int ,void*)
{
m = Scalar(lightValue,lightValue,lightValue);//创建调整亮度的数值
add(src,m,dst);//定义亮度变化为加
imshow("adjust light",dst);//显示调整亮度之后的图片
}
void test1::sliderBar(Mat &image)
{
namedWindow("adjust light",WINDOW_FREERATIO);
dst = Mat::zeros(image.size(),image.type());//图片的初始化创建一个和image大小相等,种类相同的图像
m = Mat::zeros(image.size(),image.type());
src = image;
int max_v=100;//最大值
createTrackbar("Trackbar","adjust light",&lightValue,max_v,on_track);//调用on_track函数实现功能
on_track(30,0);
}
三、实现效果
input窗口为原始图片