首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

OpenCV为何只保存视频的前景帧后得到的是无效的文件?附代码

2012-06-27 
OpenCV为什么只保存视频的前景帧后得到的是无效的文件?附代码C/C++ code#include opencv2/core/core.hpp

OpenCV为什么只保存视频的前景帧后得到的是无效的文件?附代码

C/C++ code
#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/video/video.hpp>#include <iostream>using namespace cv;using namespace std;int main(){   Mat frame;    Mat foreground;   // 前景图片   IplImage img;   VideoCapture capture("a.avi");   VideoWriter writer;   CvCapture* capture1 = cvCreateFileCapture( "a.avi" );   if (!capture1 || !capture.isOpened())   {      return 0;   }   double fps = cvGetCaptureProperty (capture1,CV_CAP_PROP_FPS);   //c++接口不知道怎么取。。   CvSize size = cvSize((int)cvGetCaptureProperty( capture1, CV_CAP_PROP_FRAME_WIDTH),(int)cvGetCaptureProperty( capture1, CV_CAP_PROP_FRAME_HEIGHT));   Size s(size.width, size.height);//   CvVideoWriter* writer = cvCreateVideoWriter("b.avi",CV_FOURCC('D','X','5','0'), fps,size);   writer.open("b.avi", CV_FOURCC('M','J','P','G'), fps, s);   namedWindow("Extracted Foreground");   namedWindow("Source Video");   // 混合高斯物体   BackgroundSubtractorMOG mog;   bool stop(false);   while (!stop)   {      if (!capture.read(frame))      {         break;      }      mog(frame, foreground, 0.01);      threshold(foreground, foreground, 128, 255, THRESH_BINARY_INV);      //img = foreground;      // cvWriteToAVI( writer, &img );      writer.write(foreground);      // show foreground      imshow("Extracted Foreground", foreground);      imshow("Source Video", frame);      if (waitKey(10) == 27)      {         stop = true;      }   }}


b.avi是一个6K的无效文件

[解决办法]

学习下!
[解决办法]
恭喜,接分
[解决办法]
呵呵,怎么解决的?存的是个图片吧:)

热点排行