C++ 如何在OpenCV中获取视频的帧提要?
我需要从OpenCV获取视频的帧提要。我的代码运行良好,但我需要获得它在每毫秒处理的帧 我正在Linux上使用cmake 我的代码: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(;
#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!请阅读常见问题解答,了解如何处理您的问题。