如何仅使用OpenCV HighGui制作一个带有一个按钮的简单窗口?

猫尾巴

我正在使用OpenCV进行游戏项目。现在,我必须制作一个简单的GUI:一个带有一个按钮的窗口,仅使用HighGui。

我不确定,但我认为我应该使用这样的东西:

cvNamedWindow( "NameWindow" , CV_WINDOW_AUTOSIZE);

任何帮助深表感谢。

三木

OpenCV没有提供按钮,但是您可以轻松使用彩色矩形,并检查图像上的单击点是否在该矩形内。

请记住,OpenCV HighGui非常简单,仅用于调试目的。您可能希望将功能齐全的图形库用作Qt或类似的库。

但是,这是一个小示例,显示一个(绿色)图像,并在顶部显示一个按钮:

在此处输入图片说明

单击该按钮将在标准输出上打印“ Clicked”:

在此处输入图片说明

码:

#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;


Mat3b canvas;
string buttonText("Click me!");
string winName = "My cool GUI v0.1";

Rect button;


void callBackFunc(int event, int x, int y, int flags, void* userdata)
{
    if (event == EVENT_LBUTTONDOWN)
    {
        if (button.contains(Point(x, y)))
        {
            cout << "Clicked!" << endl;
            rectangle(canvas(button), button, Scalar(0,0,255), 2);
        }
    }
    if (event == EVENT_LBUTTONUP)
    {
        rectangle(canvas, button, Scalar(200, 200, 200), 2);
    }

    imshow(winName, canvas);
    waitKey(1);
}

int main() 
{
    // An image
    Mat3b img(300, 300, Vec3b(0, 255, 0));

    // Your button
    button = Rect(0,0,img.cols, 50);

    // The canvas
    canvas = Mat3b(img.rows + button.height, img.cols, Vec3b(0,0,0));

    // Draw the button
    canvas(button) = Vec3b(200,200,200);
    putText(canvas(button), buttonText, Point(button.width*0.35, button.height*0.7), FONT_HERSHEY_PLAIN, 1, Scalar(0,0,0));

    // Draw the image
    img.copyTo(canvas(Rect(0, button.height, img.cols, img.rows)));

    // Setup callback function
    namedWindow(winName);
    setMouseCallback(winName, callBackFunc);

    imshow(winName, canvas);
    waitKey();

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何制作一个有角度的弹出窗口?

如何在Xamarin中制作一个带有孩子的按钮?

如何制作一个带有删除和链接的按钮?

如何制作一个带有负值的seekBar?

如何制作一个带有2个在Qt运行时同时打开的窗口的程序?

如何制作一个for循环,以创建一个带有数字的圆?

如何制作一个接受另一个带有可变参数的函数

如何使用php制作一个简单的登录系统?

单击一个按钮时如何仅创建一个新窗口?Tkinter

如何制作一个简单简单的sh文件来删除一个目录

如何在情节提要中制作一个简单的圆形按钮?

如何制作一个简单的jQuery按钮来切换元素的背景

如何为 Gson 制作一个带有 POJO“B”的 POJO“A”,但只为“A”使用一个“B”变量

如何制作一个带有span标签和glyphicon而不是bootstrap上的按钮的下拉菜单?

如果另一个单元格具有特定值,如何制作一个按钮,该按钮仅将值从一个表发送到另一个表中的行

iOS:如何制作一个简单的方块?

如何制作一个简单的休息框架示例?

如何制作一个简单的公钥密码算法?

如何制作一个简单的C ++ Makefile

如何在.xaml中制作一个简单的ContentDialog?

如何制作一个简单的进度条

如何制作一个简单的Jquery滑动菜单?

我如何制作一个简单的 RewriteRule?

使用 HTML、PHP 制作一个简单的子菜单

使用 while 制作一个简单的计算器

如何为每个模型制作一个单独的窗口?

WPF如何制作(说)一个主窗口

如何在 JavaFx 中制作一个 suttering 窗口?

如何使用 Twitter Bootstrap 3 简单地将带有文本的 div 与另一个带有按钮的 div 垂直居中