使用ffmpeg和rstp传票进行opencv视频人脸检测

时间:2019-03-23 13:43:21

标签: opencv ffmpeg stream face-detection

我有问题。 我有一个(现在)网络摄像头可以识别面孔的信息流。 只有当我不睡一会儿时,它才起作用。

但是如果我在捕获中添加延迟并睡眠30毫秒,则在下一帧中它不使用当前帧,而是滑移。 奇怪的是,如果我使用/ dev / video0可以正常工作,但是如果我通过ffmpeg使用流,那就在发生。

这怎么可能?

  try {
            while(running) {
                capture >> frame;

                if( frame.empty()) {
                    continue;
                }

                Mat frame1 = frame.clone();
                vector<Rect> facesResult = detectAndDraw( frame1, cascade);

                facesMutex.lock();
                faces = facesResult;
                facesMutex.unlock();

  GETTING THIS SLIPPING IF I USE SLEEPING

                //waitKey(250);
                //std::this_thread::sleep_for(std::chrono::milliseconds(1000));

            }
        } catch (std::exception &e) {
            facesMutex.unlock();
            Napi::AsyncWorker::SetError(e.what());
        }

看起来线程休眠时应该经过一些帧,但是从1..2..3..4..5开始,我应该获得第5帧,但是即使它正在使用睡眠,它也应该下一个第n帧,它将转到下一个nt(第二个)帧...

是因为它是真实流而不是/dev/video0(因为设备不会滑动)

0 个答案:

没有答案