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

来源:互联网 发布:隔墙听音器 淘宝 编辑:程序博客网 时间:2024/05/16 08:21

滑动条(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;}

文件目录:


运行结果:






1 0
原创粉丝点击