滑动条示意图
好处就是可以在程序运行后实时改变程序中的某个参数。
创建滑动条相关函数
createTrackbar()
int cv::createTrackbar(const String & trackbamame,
const String & winname,
int* value,
int count,
onChange =
TrackbarCallback 0,
void* userfata = 0
)
·trackbarname:滑动条的名称
·winname:创建滑动条窗口名称
·value:指向整数变量的指针,该指针指向的值反映滑块的位置,创建后,滑块位置由此变量定义。
·count:滑动条的最大值
·onChange:每次滑块更改位置时要调用的函数指针。该函数应该原型为void Foo (int,void*);,其中第一个参数是轨迹栏位置,第二个参数是用户数据。如果回调是NULL指针,则不会调用任何回调,只更新数值。
·userdata:传递给回调函数的可选参数。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv; //opencv的命名空间
using namespace std;
void callBack(int value, void*); //创建回调函数callback,是一个void类型
Mat img;
int value = 100;
int main()
{
img = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lenac.png");
namedWindow("img"); //图像显示的窗口界面
imshow("img", img);
createTrackbar("百分比", "img", &value, 600, callBack, 0);
waitKey(0);//等待函数用于显示图像
return 0;
}
void callBack(int vlaue, void*)
{
float a = value / 100.0; //把图像乘a就可以对图像进行放大或者缩小,当value小于100时,a<1,缩小
Mat img2;
img2 = img * a;
imshow("img", img2);
}