OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
向我們的應用程式新增滑動條!

下一個教程: 使用GDAL讀取地理空間柵格檔案

原始作者Ana Huamán
相容性OpenCV >= 3.0
  • 在之前的教程中(關於使用OpenCV新增(混合)兩幅影像改變影像的對比度和亮度!),您可能已經注意到我們需要給程式一些輸入,例如 \(\alpha\) 和 \(beta\)。我們透過在終端中輸入這些資料來完成。
  • 現在是時候使用一些花哨的GUI工具了。OpenCV為您提供了一些GUI實用程式(highgui模組)。一個例子就是軌跡條(Trackbar)
  • 在本教程中,我們將修改之前的兩個程式,使它們從軌跡條獲取輸入資訊。

目標

在本教程中,您將學習如何

程式碼

讓我們修改在教程使用OpenCV新增(混合)兩幅影像中建立的程式。我們將讓使用者透過軌跡條輸入 \(\alpha\) 值。

解釋

我們只分析與軌跡條相關的程式碼。

  • 首先,我們載入兩幅影像,它們將被混合。
  • 要建立軌跡條,我們首先必須建立它將位於的視窗。所以:
  • 現在我們可以建立軌跡條了:

請注意以下幾點(C++程式碼):

  • 我們的軌跡條有一個標籤TrackbarName
  • 軌跡條位於名為Linear Blend的視窗中。
  • 軌跡條的值將在 \(0\) 到alpha_slider_max的範圍內(最小限制始終為)。
  • 軌跡條的數值儲存在alpha_slider中。
  • 無論使用者何時移動軌跡條,回撥函式on_trackbar都會被呼叫。

最後,我們必須為C++和Python程式碼定義回撥函式on_trackbar,在Java中使用匿名內部類監聽器。

請注意(C++程式碼):

  • 我們使用alpha_slider(整數)的值來獲取alpha的雙精度值。
  • alpha_slider在使用者每次拖動軌跡條時都會更新。
  • 我們將src1src2distalphaalpha_sliderbeta定義為全域性變數,以便它們可以在任何地方使用。

結果

  • 我們的程式產生以下輸出:
  • 作為練習,您還可以為在改變影像的對比度和亮度!中建立的程式新增兩個軌跡條。一個軌跡條用於設定 \(\alpha\),另一個用於設定 \(\beta\)。輸出可能看起來像這樣: