1. 程式人生 > >簡單的opencv GUI庫

簡單的opencv GUI庫

對影象進行處理時通常需要調整函式的引數,特別是像邊緣檢測或者是影象亮度調節等操作,常常需要經過多次調節才能得到滿意的結果。而每次要重新設定引數都需要重新更改程式中的程式碼,opencv也有自帶的gui,不過一直覺得很不好用,今天發現了一個非常簡單的gui庫:cvui,只需要包含一個頭檔案,並且是跨平臺的,不需要附屬其他檔案,非常方便。
下載地址:cvui
介面先睹為快:
這裡寫圖片描述

下面以canny邊緣檢測為例,動態調節高低閾值的大小,主要包括一個checkbox和兩個trackbar,程式碼非常簡潔,很適合簡單的應用。
直接貼程式碼:

#include <opencv2/opencv.hpp>
#include "cvui.h" #define WINDOW_NAME "CVUI" using namespace cv; using namespace std; int main() { Mat src = imread("lena.jpg"); Mat frame = src.clone(); int low_threshold = 50, hight_threshold = 100; bool use_canny = false; // Init a OpenCV window and tell cvui to use it. namedWindow(WINDOW_NAME); cvui::init(WINDOW_NAME); while
(true) { if (use_canny) { cvtColor(src, frame, CV_BGR2GRAY); Canny(frame, frame, low_threshold, hight_threshold, 3); } else { src.copyTo(frame); } // Render the settings window to house the UI cvui::window(frame, 10
, 50, 180, 180, "Settings"); // Checkbox to enable/disable the use of Canny edge cvui::checkbox(frame, 15, 80, "use canny edge", &use_canny); // Two trackbars to control the low and high // threshold values for the Canny edge algorithm. cvui::trackbar(frame, 15, 110, 165, &low_threshold, 5, 150); cvui::trackbar(frame, 15, 180, 165, &hight_threshold, 80, 300); // Update cvui internal stuff cvui::update(); imshow(WINDOW_NAME, frame); if (waitKey(30) == 27) { break; } } return 0; }

需要注意兩點:
1.使用cvui需要在顯示任何控制元件之前呼叫cvui::init();
2.在所有控制元件都顯示後需要呼叫cvui::update();

這裡寫圖片描述

just enjoy the cvui!