我和opencv 3

早几天因为要考科目二和突然对记忆宫殿感兴趣就没有怎么更新了,对于opencv的一些用法有比较陌生,但是不虚,今天我的《opencv3编程入门》到了,就让我从第3章重新开始吧。
今天来个高级点的:滑动条的创建和使用

CV_EXPORTS int createTrackbar
(   const string& trackbarname, //
    const string& winname,//
    int* value, //指向整型的指针,表示滑块的位置,可定义其初始值
    int count,//滑块的最大值即0<=value<=count
    TrackbarCallback onChange = 0,//回调函数
    void* userdata = 0//   
);
typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);

将大神的程序消化完后

Mat src1,src2,dst;
const int g_MaxAlpha=100;
double g_Alpha,g_Beta;
int g_AlphaSlider=70;//必须为整数
void on_Trackbar(int,void*)
{
    g_Alpha=(double)g_AlphaSlider/g_MaxAlpha;//强制转化
    g_Beta=1.0-g_Alpha;
    addWeighted(src1,g_Alpha,src2,g_Beta,0.,dst);
    //cout<<g_AlphaSlider<<endl;可以时时获取位置的值,
    imshow("1",dst);
    //waitkey(0);不能加在这,会影响函数的调用
}
bool Trackbar_addWeighted()
{
    src1=imread("dota2_qop.jpg");
    src2=imread("dota2_pom.jpg");
    if (!src1.data&!src2.data)
    {
        printf("reading image error!!!");
        return 0;
    }
    namedWindow("1");
    char TrackbarName[50];
    sprintf_s(TrackbarName,"透明值 %d",g_MaxAlpha);//这个函数有妙用
    createTrackbar(TrackbarName,"1",&g_AlphaSlider,g_MaxAlpha,on_Trackbar);//第三个参数为向量形式
    on_Trackbar(g_AlphaSlider,0);//必须回调,否则没有初值
    return 1;
}
int main()
{
    if(Trackbar_addWeighted())
        cout<<"sucess"<<endl;
    waitKey(0);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值