OpenCV学习之旅——滑动条的创建和使用

来源:互联网 发布:lol免费刷皮肤软件 编辑:程序博客网 时间:2024/06/05 20:29

目的:创建滑动条,通过改变滑动条调整参数改变图像性质
函数:creatTrackbar(conststring&trackbarname,conststring&winname,int*value,int count,TrackbarCallback onChange=0,void* userdata=0)
代码示例源于: > OpenCV3 编程入门 第三章

#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;#define WINDOW_NAME "【滑动条的创建&线性混合示例】"        //为窗口标题定义的宏 const int g_nMaxAlphaValue = 100;//Alpha值的最大值int g_nAlphaValueSlider;//滑动条对应的变量double g_dAlphaValue;double g_dBetaValue;//声明存储图像的变量Mat g_srcImage1;Mat g_srcImage2;Mat g_dstImage;void on_Trackbar( int, void* )  //回调函数{    //求出当前alpha值相对于最大值的比例    g_dAlphaValue = (double) g_nAlphaValueSlider/g_nMaxAlphaValue ;    //则beta值为1减去alpha值    g_dBetaValue = ( 1.0 - g_dAlphaValue );    //根据alpha和beta值进行线性混合    addWeighted( g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);    //显示效果图    imshow( WINDOW_NAME, g_dstImage );}int main( int argc, char** argv ){    //加载图像 (两图像的尺寸需相同)    g_srcImage1 = imread("1.jpg");    g_srcImage2 = imread("2.jpg");    if( !g_srcImage1.data ) { printf("读取第一幅图片错误,请确定目录下是否有imread函数指定图片存在~! \n"); return -1; }    if( !g_srcImage2.data ) { printf("读取第二幅图片错误,请确定目录下是否有imread函数指定图片存在~!\n"); return -1; }    //设置滑动条初值为70    g_nAlphaValueSlider = 70;    //创建窗体    namedWindow(WINDOW_NAME, 1);    //在创建的窗体中创建一个滑动条控件    char TrackbarName[50];    sprintf( TrackbarName, "透明值 %d", g_nMaxAlphaValue );    createTrackbar( TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar );    //结果在回调函数中显示    on_Trackbar( g_nAlphaValueSlider, 0 );    //按任意键退出    waitKey(0);    return 0;}

TIPS:getTrackbarPos(conststring&trackbarname, conststring&winname)可用于获取当前轨迹条的位置并返回。
效果图:

这里写图片描述

原创粉丝点击