最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在OpenCV的摄像头禁用缓存?

IT培训 admin 8浏览 0评论

如何在OpenCV的摄像头禁用缓存?

我有这样的情况下,我使用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();
}

My question is:

是否有可能删除缓存中的所有在一起?如果是这样,怎么样。如果没有,why将不胜感激。

回答如下:

我有同样的问题,但在C ++中。我没有找到OpenCV的妥善解决,但我发现了一个解决方法。该缓冲器累积图像的恒定数目,说n个帧。所以,你可以读取n不加分析框架和读取帧一次。这最后一帧将从摄像机的实时图像。就像是:

buffer_size = n;

for n+1
{
  // read frames to mat variable
}
// Do something on Mat with live image

如何在OpenCV的摄像头禁用缓存?

我有这样的情况下,我使用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();
}

My question is:

是否有可能删除缓存中的所有在一起?如果是这样,怎么样。如果没有,why将不胜感激。

回答如下:

我有同样的问题,但在C ++中。我没有找到OpenCV的妥善解决,但我发现了一个解决方法。该缓冲器累积图像的恒定数目,说n个帧。所以,你可以读取n不加分析框架和读取帧一次。这最后一帧将从摄像机的实时图像。就像是:

buffer_size = n;

for n+1
{
  // read frames to mat variable
}
// Do something on Mat with live image
发布评论

评论列表 (0)

  1. 暂无评论