отображение видеопотока в dlib gui_widget для графического интерфейса пользователя - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в коде C ++.

Я использую dlib gui_widget для графического интерфейса пользователя.я пытаюсь сделать, это отобразить поток камеры в image_display.я получаю поток с камеры из cv :: VideoCapture cap (0) ;.Мой метод - просто отобразить первый кадр потока.я знаю, что поток - это продолжение задачи.

Скажите, пожалуйста, как мне изменить мой код.

мой простой код здесь.

#include <memory>
#include <sstream>
#include <string>

#include <dlib/gui_widgets.h>
#include <dlib/string.h>
#include <dlib/opencv.h>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace dlib;

class main_window : public drawable_window
{
public:
    main_window();
    ~main_window();

private:
    image_display drawF;
};

int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR cmds, int)
{
    main_window my_window;
    my_window.show();
    my_window.wait_until_closed();

    return 0;
}

main_window::main_window() : 
    drawF(*this)
{
    set_title("camera stream example");

    set_size(1000, 500);

    drawF.set_pos(20, 20);
    drawF.set_size(200, 200);

    cv::VideoCapture cap(0);
    if (cap.isOpened())
    {
        cv::Mat temp;
        if (cap.read(temp))
        {
            cv_image<bgr_pixel> cimg(temp);
            drawF.set_image(cimg);
        }
    }
    else
    {
        message_box("Problem", "Unable to connect to camera");
    }


    on_window_resized();
}

main_window::~main_window()
{
    close_window();
}

void main_window::on_window_resized()
{
    drawable_window::on_window_resized();

    unsigned long width, height;
    get_size(width, height);

    if (width < 500 || height < 350)
        return;

}
...