opencv:如何创建滑动条及应用详解
- 对于opencv中创建滑动条的个人理解:通过调用创建滑动条的函数并对回调函数进行初始化,即可以进行调用,滑动条相当于一个可操作性的变量控制,可以通过改变滑动条的位置去实时的改变对应变量的值。
- 创建滑动条后,图片的显示窗口中便会出现一个滑动条,可以通过滑动条来改变滑动条对应变量的数字,然后通过程序根据变量的改变而做出相应的调整,或对图片进行切换,或对图片进行相关的处理
- 当前的程序是当数字为零时显示茶杯1的图像,当数字为一时显示茶杯2的图像
- 创建滑动条函数共有5个参数,第1个参数是滑动条的名称,第2个参数是创建滑动条的图片窗口,第3个窗参数是滑动条对应的变量,第4个参数是滑动条的最大值,第5个参数则是回调函数的名称
- 在对滑动条进行操作时,每一次的操作都会调用一次回调函数,所以当需要根据滑动条的改变做出相应的操作时,需要在回调函数中填写相应的操作代码
- 完整的程序代码如下
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;
Mat src,src1;
int i = 0;//滑动条初始值
int maxnum = 1;//滑动条最大值
void text(int, void*);//声明回调函数int main()
{
src = imread("F:\\vs2019文件\\图片\\茶杯1.jpg");
src1 = imread("F:\\vs2019文件\\图片\\茶杯2.jpg");//新建一个窗口
namedWindow("测试窗口", WINDOW_NORMAL);
//WINDOW_AUTOSIZE,WINDOW_NORMAL ,WINDOW_OPENGL
//创建滑动条
//注意:i是变量,滑动条擦改变后i改变。
createTrackbar("数字:", "测试窗口", &i, maxnum, text);//text(0, 0);
waitKey(0);
return 0;
}
//回调函数
void text(int, void*)
{
if (i == 1)
{
imshow("测试窗口", src);
}
else
{
imshow("测试窗口", src1);
}
/*printf("数字i的值为:");
printf("%d\n", i);*/
cout << "数字i的值为:" << i << endl;
}