您的位置:首页 > 编程语言 > C语言/C++

C/C++ OpenCV滑动条的创建与使用

2017-01-09 16:52 288 查看
滑动条(Trackbar)是Opencv动态调节参数的一个工具,他依附于窗口存在

创建滑动条:createTrackbar()

int createTrackbar(

const string& trackbarname,

const string& winname,

int *value,

int count,

TrackbarCallback onCahnge=0,

void* userdata=0)

第一个参数:const string&类型的trackbarname,轨迹条的名字,用来代表我们创建的轨迹条

第二个参数:窗口名,表示这个轨迹条依附到哪个窗口上,即对应namedWindow()创建时窗口填的窗口名

第三个参数:int*类型的value,一个指向整形的指针,表示滑块的位置,在创建时,滑块的初始位置就是该变量的值。

第四个参数:int类型的count,表示滑块可以到达的最大位置的值,滑块最小位置的值始终是0

第五个参数:回调函数,这个函数必须是void XXX(int,void*)其中第一个参数是轨迹的位置,第二个参数是用户数据。

第六个参数:void*类型的userdata,默认为0,这个参数是用户传递给回调函数的数据,三国第三个使用全局变量的话,这个参数省略

下面是代码:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

#define WINDOW_NAME "线性混合"

//变量声明
const int g_nMaxAlphaValue = 100; //Alpha的最大值
int g_nAlphaValuesSlider; //滑动条对应的变量
double g_dAlpaValue;
double g_dBetaValue;

//声明存储图像的变量
Mat g_srcImage1;
Mat g_srcImage2;
Mat g_dstImage;

//响应滑动条的回调函数
void on_Trackbar(int, void *)
{
//求出当前alpha值对于最大值的比例
g_dAlpaValue = (double)g_nAlphaValuesSlider / g_nMaxAlphaValue;

//求出第二张图片的权重
g_dBetaValue = (1.0 - g_dAlpaValue);

//线性混合
addWeighted(g_srcImage1, g_dAlpaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);

//显示效果图
imshow(WINDOW_NAME, g_dstImage);
}

int main()
{
g_srcImage1 = imread("1.jpg");
g_srcImage2 = imread("2.jpg");
if (!g_srcImage1.data)
{
printf("第一张读取失败\n");
return -1;
}
if (!g_srcImage2.data)
{
printf("第二张读取失败\n");
return -1;
}
//设置滑动条的初始位置
g_nAlphaValuesSlider = 50;

//创建窗体
namedWindow(WINDOW_NAME);
//在创建窗体中创建一个滑动条
char TranckbarName[50] = "透明值100";
createTrackbar(TranckbarName, WINDOW_NAME, &g_nAlphaValuesSlider, g_nMaxAlphaValue, on_Trackbar);

on_Trackbar(g_nAlphaValuesSlider, 0);

waitKey();
return 0;
}
文件目录:



运行结果:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv