Opencv 滑桿(createTrackbar)

OpenCV提供createTrackbar()函式,可以在視窗上產生滑桿,讓使用者自己調整輸入,接著用這輸入值執行預計的操作,另外有getTrackbarPos()和setTrackbarPos()函式,讓我們對滑桿進行進一步的操作。

OpenCV 產生滑桿

int createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=0, void*userdata=0)

  • trackbarname:滑桿名稱。
  • winname:滑桿的父視窗名稱。
  • value:滑桿所在位置的值。
  • count:滑桿允許的最大值,最小值為0。
  • onChange:自定義函式的名稱,當滑桿值變動時,會呼叫此函式。

當我們創建滑桿時,會搭配一個自定義函式,當使用者改變滑桿的值時,OpenCV會自動呼叫此函式。我們自行決定這個函式名稱和內容,把這名稱作為createTrackbar()裡的onChange參數,當然,通常這函式內部會使用到滑桿輸入值。


OpenCV 得到滑桿位置

int getTrackbarPos(const string& trackbarname, const string& winname)

  • trackbarname:滑桿名稱。
  • winname:滑桿的父視窗名稱。

OpenCV 設定滑桿位置

void setTrackbarPos(const string& trackbarname, const string& winname, int pos)

  • trackbarname:滑桿名稱。
  • winname:滑桿的父視窗名稱。
  • pos:滑桿位置。

以下我們程式碼創建滑桿,sliderValue為滑桿的值,初始為0,使用者可透過拉動滑桿更改sliderValue的值,sliderMaxValue為滑桿的最大值,我們這邊設為100,當使用者拉動滑桿時,程式呼叫on_trackbar()函式,此時讀取sliderValue的值當作影像的混和比例:

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

int sliderValue;
Mat src1, src2;

void on_trackbar(int, void*){
    double alpha = (double) sliderValue/100.0 ;
    double beta = ( 1.0 - alpha );
    Mat dst;

    addWeighted( src1, alpha, src2, beta, 0.0, dst);
    imshow("trackbar demo", dst);
}

int main(){
    src1 = imread("beach.jpg",CV_LOAD_IMAGE_UNCHANGED);
    src2 = imread("cat.jpg",CV_LOAD_IMAGE_UNCHANGED);
    sliderValue = 0;
    int sliderMaxValue = 100;

    namedWindow("trackbar demo", 0);
    createTrackbar("Ratio", "trackbar demo", &sliderValue, sliderMaxValue, on_trackbar);
    on_trackbar(sliderValue, 0 );

    waitKey(0);
    return 0;
}

trackbar


转自:http://monkeycoding.com/?p=652
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值