简单的opencv GUI库

来源:互联网 发布:云游seo 编辑:程序博客网 时间:2024/06/07 13:27

对图像进行处理时通常需要调整函数的参数,特别是像边缘检测或者是图像亮度调节等操作,常常需要经过多次调节才能得到满意的结果。而每次要重新设置参数都需要重新更改程序中的代码,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!

原创粉丝点击