Создать кнопку в OpenCV GUI без QT [дублировать]

Обычно ошибка, возникающая при сбое в работе базы данных базы данных, поэтому не забудьте подключить вашу базу данных или включить файл базы данных.

include_once(db_connetc.php');

ИЛИ

// Create a connection
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());

//Select database
mysql_select_db("db_name", $connection) or die(mysql_error());

$employee_query = "SELECT * FROM employee WHERE `id` ='".$_POST['id']."';

$employee_data = mysql_query($employee_query);

if (mysql_num_rows($employee_data) > 0) {

    while ($row = mysql_fetch_array($employee_data)){
        echo $row['emp_name'];
    } // end of while loop
} // end of if
  • Лучшей практикой является запуск запроса в sqlyog, а затем его копирование в код страницы.
  • Всегда сохраняйте свой запрос в переменной и затем повторяйте эту переменную. Затем перейдите к mysql_query($query_variable);.
5
задан Miki 26 November 2015 в 13:52
поделиться

3 ответа

OpenCV не предоставляет кнопку , но вы можете легко использовать цветной прямоугольник и проверить, находится ли точка щелчка на изображении внутри этого прямоугольника.

Помните, что OpenCV HighGui очень прост и предназначен только для целей отладки. Вы можете использовать полнофункциональную графическую библиотеку как Qt или аналогичную.

Однако это небольшой пример, показывающий (зеленое) изображение и кнопку сверху:

Щелчок по кнопке будет печатать «Щелкнуть» на stdout:

Код:

#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;
}
12
ответ дан Miki 28 August 2018 в 21:33
поделиться

вы знаете, что openCV не является графической библиотекой, но библиотека обработки изображений

поставляется с highgui: http://docs.opencv.org/2.4/modules/highgui /doc/highgui.html

для тех случаев, когда у вас действительно нет других параметров, но вам нужно создать окно для отображения материала.

Хотя OpenCV был разработан для использования в полномасштабных приложениях и может использоваться в функционально насыщенных интерфейсах пользовательского интерфейса (таких как Qt *, WinForms * или Cocoa *) или вообще без какого-либо интерфейса, иногда там требуется быстро попробовать функциональность и визуализировать Результаты. Это то, для чего был разработан модуль HighGUI.

см. OpenCV и создание GUI

edit: «это не отвечает вопрос ": -> дополнительная справка ..

вы не можете.

или это, если вы знаете своего базового диспетчера окон, вы можете. т.е. если вы на окнах, вы можете получить дескриптор окна и динамически добавлять дополнительные элементы управления. Если нет, вам нужно знать, на какой платформе вы работаете, и как это сделать.

Я бы не посмел попытаться поставить это на простой ответ

0
ответ дан Community 28 August 2018 в 21:33
поделиться

@Miki, почему я не могу использовать свои кнопки попеременно? Как это исправить? Я имею в виду, что я хочу использовать их одновременно.

РЕДАКТИРОВАТЬ: я сам это исправил. Нет необходимости в помощи. :)

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


Mat3b canvas;
string buttonText("Nacisnij guzik!");
string buttonText2("Nacisnij guzik NR2!");
string winName = "PokerGui";
int a = 0;//mozna pozniej usunac, potrzebne tylko czy button reaguje jak nalezy

Rect button, button2;



void callBackFunc(int event, int x, int y, int flags, void* userdata)
{
    if (event == EVENT_LBUTTONDOWN)
    {
        if (button.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
        {
            a = a + 7;
            cout << "Nacisnales guzik!\n" << endl;
            printf("liczba = %i\n", a);
            rectangle(canvas(button), button, Scalar(0, 0, 255), 2);

        }
        else if (button2.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
        {
            //a = a + 7;
            cout << "Nacisnales guzik NR2!\n" << endl;
            //printf("liczba = %i\n", a);
            rectangle(canvas(button2), button, Scalar(0, 0, 255), 2);
        }
    }
    //if (event == EVENT_LBUTTONUP)
    //{
    //rectangle(canvas, button, Scalar(200, 200, 200), 2);
    //}

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

void callBackFunc2(int event, int x, int y, int flags, void* userdata)
{
    if (event == EVENT_LBUTTONDOWN)
    {
        if (button2.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
        {
            //a = a + 7;
            cout << "Nacisnales guzik NR2!\n" << endl;
            //printf("liczba = %i\n", a);
            rectangle(canvas(button2), 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);
    button2 = Rect(0, 60, 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);
    canvas(button2) = 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));
    putText(canvas(button2), buttonText2, Point(button.width*0.25, 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);
    //setMouseCallback(winName, callBackFunc2);

    imshow(winName, canvas);
    waitKey();

    return 0;
}
0
ответ дан Koci Ogon 28 August 2018 в 21:33
поделиться