相关疑难解决方法(0)

如何在 OpenCV 相机中禁用缓冲区?

我遇到过这种情况,我使用 OpenCV 来检测相机前的人脸并对这些人脸进行一些机器学习。我遇到的问题是,一旦我完成所有处理,然后去抓取下一帧,我就会得到过去,而不是现在。意思是,我将读取缓冲区内的内容,而不是实际在相机前的内容。因为我不在乎处理时哪些人脸出现在相机前面,所以我关心现在在相机前面的是什么。

我确实尝试将缓冲区大小设置为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.

    //
    //  <>> …
Run Code Online (Sandbox Code Playgroud)

camera buffer opencv node.js opencv4nodejs

12
推荐指数
2
解决办法
8392
查看次数

标签 统计

buffer ×1

camera ×1

node.js ×1

opencv ×1

opencv4nodejs ×1