如何从AVI视频中提取帧
How to extract Frames from AVI video
到目前为止,我管理OpenCV播放视频。但是我现在应该怎么做来提取帧…?
下面是我写的代码,到目前为止,我的视频播放:
#include<opencvcv.h>
#include<opencvhighgui.h>
#include<opencvml.h>
#include<opencvcxcore.h>
int main( int argc, char** argv ) {
cvNamedWindow( "DisplayVideo", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture( argv[1] );
IplImage* frame;
while(1) {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "DisplayVideo", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow("DisplayVideo" );
}
frame
是要提取的帧。如果你想把它转换成cv::Mat你可以用IplImage:
Mat myImage(IplImage);
这里有一个很好的教程。
然而,你在用老方法做。最新版本的OpenCV有最新的相机捕捉功能,你应该这样做:
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main()
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
namedWindow("Output",1);
while(true)
{
Mat frame;
cap >> frame; // get a new frame from camera
//Do your processing here
...
//Show the image
imshow("Output", frame);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
相关文章:
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么istream不支持右值提取
- 如何设置一个范围来提取我想要获得的信息
- 如何在c++中录制具有精确帧时间戳的视频
- 如何在QT中的自定义视频小工具t上绘制矩形
- 视觉工作室项目.提取源文件夹名称
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 如何使用OpenCV-C++编写*.mp4视频?
- 开放 CV 中的动态内存分配,用于视频处理
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 在何处更改参考代码以从 HEVC 编码的视频中提取运动矢量
- 如何使用FFMPEG从编码的视频中提取AVPACKET的重要信息
- 无法使用 OpenCV C++从视频中提取帧
- 如何从视频中快速提取帧内(在C ++或Python中)
- gstreamermm:如何提取 Gst::P layBin 的最后一帧视频
- 从 flv 视频(或任何其他视频)中提取音频的算法.怎么做
- 用opencv从视频中提取帧进行检测
- 如何使用libvlc API或FFmpeg API提取音频/视频剪辑
- 如何从AVI视频中提取帧