我有问题。 我有一个(现在)网络摄像头可以识别面孔的信息流。 只有当我不睡一会儿时,它才起作用。
但是如果我在捕获中添加延迟并睡眠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
(因为设备不会滑动)