C ++: Loop Thread повторно подключает камеру - PullRequest
0 голосов
/ 13 октября 2019

У меня была проблема, когда я начал знакомиться с OpenCV в C ++.

Сначала я успешно подключился и отобразил IP-камеру через RTSP. Я отключился через короткий промежуток времени (<30 с), он автоматически подключился. Но время для большого отключения (> = 30 с) программа прерывает и завершает. Потому что я хочу, чтобы поток автоматически постоянно переподключался, не прерывая работу программы. Когда камера включена, кадры помещаются в очередь и затем отображаются (imshow). Если кадр пуст, я оставляю значение «sleep (10)» и жду, пока в очередь не будет записан новый кадр для отображения.

К сожалению, я не очень хорош в коде C ++ и имею тольконачал изучать неделю.

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

#include <iostream>
#include <thread>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace std;
using namespace cv;

class Camera
{

    public:
        static void display(int i)
        {
            VideoCapture cap(0);

            if (!cap.isOpened())
            {
                cout << "Disconnect Camera" << endl;
                exit(-1);
            }

            Mat frame;
            namedWindow("Display Camera", WINDOW_AUTOSIZE);
            while (true)
            {
                bool success = cap.read(frame);
                if (!success)
                {
                    cout << "Disconnected" << endl;
                    break;
                }
                imshow("Display Camera", frame);
                if (waitKey(1) >= 0)
                {
                    break;
                }
            }
        }
};

int main()
{
    thread myThread(bind(Camera::display, 0));
    myThread.join();

    return 0;
}

И я нашел документ по этой ссылке. Но я не могу исправить, как переместить код из функции run в main функцию, как в упомянутом комментарии HERE

Iнадеюсь, кто-то может помочь моей проблеме. Все предложения и помощь с благодарностью. Большое спасибо: D!

...