我有这种情况,我使用 OpenCV 来检测镜头前的人脸并在这些人脸上进行一些 ML。我遇到的问题是,一旦我完成了所有处理,然后去抓取下一帧,我就会得到过去,而不是现在。意思是,我将读取缓冲区内的内容,而不是实际在相机前面的内容。因为在处理过程中我不在乎哪些面孔出现在镜头前,所以我关心现在在镜头前的是什么。
我确实尝试将缓冲区大小设置为1
,这确实有很大帮助,但我仍然会获得至少 3 次缓冲区读取。将 FPS 设置为 1,也无助于 100% 消除这种情况。贝娄是我的流程。
let cv = require('opencv4nodejs');
let camera = new cv.VideoCapture(camera_port);
camera.set(cv.CAP_PROP_BUFFERSIZE, 1);
camera.set(cv.CAP_PROP_FPS, 2);
camera.set(cv.CAP_PROP_POS_FRAMES , 1);
function loop()
{
//
// <>> Grab one frame from the Camera buffer.
//
let rgb_mat = camera.read();
// Do to gray scale
// Do face detection
// Crop the image
// Do some ML stuff
// Do whats needs to be done after the results are in.
//
// <>> Release data from memory
//
rgb_mat.release();
//
// <>> Restart the loop
//
loop();
}
我的问题是:
是否可以一起删除缓冲区?如果是这样,如何。如果没有,why
将不胜感激。