C++ 如何在OpenCV中获取视频的帧提要?

C++ 如何在OpenCV中获取视频的帧提要?,c++,opencv,C++,Opencv,我需要从OpenCV获取视频的帧提要。我的代码运行良好,但我需要获得它在每毫秒处理的帧 我正在Linux上使用cmake 我的代码: #include "cv.h" #include "highgui.h" using namespace cv; int main(int, char**) { VideoCapture cap(0); // open the default camera Mat frame; namedWindow("feed",1); for(;

我需要从OpenCV获取视频的帧提要。我的代码运行良好,但我需要获得它在每毫秒处理的帧

我正在Linux上使用cmake

我的代码:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera

Mat frame;
    namedWindow("feed",1);
    for(;;)
{
    Mat frame;
    cap >> frame;   // get a new frame from camera
    imshow("feed", frame);
    if(waitKey(1) >= 0) break;
}
    return 0;
}

我假设你想储存这些相框。我会推荐(作为)
std::vector
允许您动态创建数组。该函数将一个空的
Mat
对象添加到向量的末尾,并返回数组中的最后一个元素(这允许
cap
对其进行写入)

代码如下所示:

#include "cv.h"
#include "highgui.h"

using namespace cv;

#include <vector>
using namespace std; //Usually not recommended, but you're doing this with cv anyway

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera

    vector<Mat> frame;
    namedWindow("feed",1);
    for(;;)
    {
        frame.push_back(Mat());
        cap >> frame.back();   // get a new frame from camera
        imshow("feed", frame);
        // Usually recommended to wait for 30ms
        if(waitKey(30) >= 0) break;
    }
    return 0;
}
#包括“cv.h”
#包括“highgui.h”
使用名称空间cv;
#包括
使用名称空间std//通常不推荐,但无论如何,你都是用简历来做的
int main(int,char**)
{
VideoCapture cap(0);//打开默认摄像机
矢量帧;
名称(“提要”,1);
对于(;;)
{
框架。向后推(垫());
cap>>frame.back();//从摄影机获取新帧
imshow(“提要”,帧);
//通常建议等待30毫秒
如果(等待键(30)>=0)中断;
}
返回0;
}
请注意,您可以像这样很快地填充RAM。例如,如果您每30毫秒抓取640x480个RGB帧,则在大约70秒内将达到2GB的RAM


std::vector
是一个非常有用的容器,如果您不熟悉它,我建议您查看它。

我假设您想要存储帧。我会推荐(作为)
std::vector
允许您动态创建数组。该函数将一个空的
Mat
对象添加到向量的末尾,并返回数组中的最后一个元素(这允许
cap
对其进行写入)

代码如下所示:

#include "cv.h"
#include "highgui.h"

using namespace cv;

#include <vector>
using namespace std; //Usually not recommended, but you're doing this with cv anyway

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera

    vector<Mat> frame;
    namedWindow("feed",1);
    for(;;)
    {
        frame.push_back(Mat());
        cap >> frame.back();   // get a new frame from camera
        imshow("feed", frame);
        // Usually recommended to wait for 30ms
        if(waitKey(30) >= 0) break;
    }
    return 0;
}
#包括“cv.h”
#包括“highgui.h”
使用名称空间cv;
#包括
使用名称空间std//通常不推荐,但无论如何,你都是用简历来做的
int main(int,char**)
{
VideoCapture cap(0);//打开默认摄像机
矢量帧;
名称(“提要”,1);
对于(;;)
{
框架。向后推(垫());
cap>>frame.back();//从摄影机获取新帧
imshow(“提要”,帧);
//通常建议等待30毫秒
如果(等待键(30)>=0)中断;
}
返回0;
}
请注意,您可以像这样很快地填充RAM。例如,如果您每30毫秒抓取640x480个RGB帧,则在大约70秒内将达到2GB的RAM


std::vector
是一个非常有用的容器,如果您不熟悉它,我建议您查看它。

每个ms都是您的帧速率。。e、 g.25fps是您需要存储的25帧。你可以把一个向量变成一个矩阵的向量,然后把每个矩阵向后推25分钟,然后再开始,或者甚至是一个向量,欢迎来到SO!请阅读常见问题解答,了解如何处理您的问题。每个ms都是您的帧速率。。e、 g.25fps是您需要存储的25帧。你可以把一个向量变成一个矩阵的向量,然后把每个矩阵向后推25分钟,然后再开始,或者甚至是一个向量,欢迎来到SO!请阅读常见问题解答,了解如何处理您的问题。