記得在while迴圈要設條件break跳出迴圈,否則avi檔無法開啟

#include <cv.h>
#include <highgui.h>
#include <stdio.h>


int main()
{
    CvCapture *capture;
    IplImage *frame;

    capture=cvCreateCameraCapture(0);
    cvNamedWindow("Webcam",0);

    CvVideoWriter *writer;
    char AviFileName[]="Output.avi";
    int AviForamt = -1;
    int FPS = 30;
    CvSize AviSize = cvSize(640,480);
    writer=cvCreateVideoWriter(AviFileName,AviForamt,FPS,AviSize);

    while(true)
    {
        frame = cvQueryFrame(capture);
        cvWriteFrame(writer,frame);
        if(cvWaitKey(20)>0)     break;
    }

    cvReleaseCapture(&capture);
    cvReleaseVideoWriter(&writer);
    cvDestroyWindow("Webcam");
}

 

同時錄製兩個不同播放速度的avi檔:

 

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

 

int main()
{
  CvCapture *capture;
  IplImage *frame1;
  IplImage *frame2;
  capture=cvCreateCameraCapture(0);
  cvNamedWindow("Webcam",0);

 

  CvVideoWriter *writer1;
  CvVideoWriter *writer2;
  char AviFileName1[]="Output.avi";
  char AviFileName2[]="Out.avi";
  int AviForamt = -1;
  int FPS1 = 25;
  int FPS2 = 5;
  CvSize AviSize = cvSize(640,480);
  int AviColor = 1;
  writer1=cvCreateVideoWriter(AviFileName1,AviForamt,FPS1,AviSize,AviColor);
  writer2=cvCreateVideoWriter(AviFileName2,AviForamt,FPS2,AviSize,AviColor);

 

  while(true)
  {
    frame1 = cvQueryFrame(capture);
    cvWriteFrame(writer1,frame1);
    cvWriteFrame(writer2,frame1);
    cvShowImage("Webcam",frame1);

 

    if(cvWaitKey(20)>0)
    break;
  }

 

  cvReleaseCapture(&capture);
  cvReleaseVideoWriter(&writer1);
  cvReleaseVideoWriter(&writer2);
  cvDestroyWindow("Webcam");
}

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 阿洲 的頭像
    阿洲

    阿洲程式天地

    阿洲 發表在 痞客邦 留言(0) 人氣()