Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::MovieGeneratorOpenCV Class Reference

#include <mitkMovieGeneratorOpenCV.h>

Inheritance diagram for mitk::MovieGeneratorOpenCV:
Inheritance graph
[legend]
Collaboration diagram for mitk::MovieGeneratorOpenCV:
Collaboration graph
[legend]

List of all members.

Public Types

typedef MovieGeneratorOpenCV Self
typedef MovieGenerator Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual void SetFileName (const char *fileName)
 filename under which movie is saved
void SetFourCCCodec (char *codec)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 MovieGeneratorOpenCV ()
virtual bool InitGenerator ()
 called directly before the first frame is added
virtual bool AddFrame (void *data)
 used to add a frame
virtual bool TerminateGenerator ()
 called after the last frame is added

Protected Attributes

const char * m_sFile
 name of output file
int m_dwRate
 frame rate

Detailed Description

Definition at line 34 of file mitkMovieGeneratorOpenCV.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::MovieGeneratorOpenCV::ConstPointer

Reimplemented from mitk::MovieGenerator.

Definition at line 39 of file mitkMovieGeneratorOpenCV.h.

typedef itk::SmartPointer<Self> mitk::MovieGeneratorOpenCV::Pointer

Reimplemented from mitk::MovieGenerator.

Definition at line 39 of file mitkMovieGeneratorOpenCV.h.

Reimplemented from mitk::MovieGenerator.

Definition at line 39 of file mitkMovieGeneratorOpenCV.h.

Reimplemented from mitk::MovieGenerator.

Definition at line 39 of file mitkMovieGeneratorOpenCV.h.


Constructor & Destructor Documentation

mitk::MovieGeneratorOpenCV::MovieGeneratorOpenCV (  ) [protected]

Definition at line 23 of file mitkMovieGeneratorOpenCV.cpp.

References m_dwRate, and mitk::MovieGenerator::m_initialized.

{
  m_initialized = false;
  m_aviWriter   = NULL;
  m_dwRate = 20;

  m_FourCCCodec = NULL;
}

Member Function Documentation

bool mitk::MovieGeneratorOpenCV::AddFrame ( void *  data ) [protected, virtual]

used to add a frame

Implements mitk::MovieGenerator.

Definition at line 107 of file mitkMovieGeneratorOpenCV.cpp.

{
  //cvSetImageData(m_currentFrame,data,m_width*3);
  memcpy(m_currentFrame->imageData,data,m_width*m_height*3);
  cvWriteFrame(m_aviWriter,m_currentFrame);
  return true;
}
virtual const char* mitk::MovieGeneratorOpenCV::GetClassName (  ) const [virtual]

Reimplemented from mitk::MovieGenerator.

bool mitk::MovieGeneratorOpenCV::InitGenerator (  ) [protected, virtual]

called directly before the first frame is added

Implements mitk::MovieGenerator.

Definition at line 39 of file mitkMovieGeneratorOpenCV.cpp.

{
  m_width = m_renderer->GetRenderWindow()->GetSize()[0];  // changed from glGetIntegerv( GL_VIEWPORT, viewport );
  m_height = m_renderer->GetRenderWindow()->GetSize()[1]; // due to sometimes strange dimensions
  
  m_width  -= 10;  //remove colored boarders around renderwindows 
  m_height -= 10;
  
  m_width -= m_width % 4; // some video codecs have prerequisites to the image dimensions
  m_height -= m_height % 4;


  
  m_currentFrame = cvCreateImage(cvSize(m_width,m_height),8,3); // creating image with widget size, 8 bit per pixel and 3 channel r,g,b
  m_currentFrame->origin = 1; // avoid building a video with bottom up
  
  /*
  m_sFile = Name of the output video file. 
  CV_FOURCC = 4-character code of codec used to compress the frames. For example, CV_FOURCC('P','I','M','1') is MPEG-1 codec, 
  CV_FOURCC('M','J','P','G') is motion-jpeg codec etc.
   CV_FOURCC('P','I','M','1')    = MPEG-1 codec
  CV_FOURCC('M','J','P','G')    = motion-jpeg codec (does not work well)
  CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
  CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
  CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
  CV_FOURCC('U', '2', '6', '3') = H263 codec
  CV_FOURCC('I', '2', '6', '3') = H263I codec
  CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

  List of FOURCC codes is available at http://msdn2.microsoft.com/en-us/library/ms867195.aspx
  
  Under Win32 it is possible to pass -1 in order to choose compression 
  method and additional compression parameters from dialog. 
  m_dwRate = Framerate of the created video stream. 
  frame_size Size of video frames. 
  1 = If it is not zero, the encoder will expect and encode color frames, otherwise it will work with grayscale frames 
  (the flag is currently supported on Windows only).*/
  
  if(m_FourCCCodec != NULL)
  {
    #ifdef WIN32
      m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC(m_FourCCCodec[0],m_FourCCCodec[1],m_FourCCCodec[2],
                                        m_FourCCCodec[3]),m_dwRate,cvSize(m_width,m_height),1); //initializing video writer
    #else
      m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC(m_FourCCCodec[0],m_FourCCCodec[1],m_FourCCCodec[2],
                                        m_FourCCCodec[3]),m_dwRate,cvSize(m_width,m_height)); //initializing video writer
    #endif
  }
  else
  {
    #ifdef WIN32
      m_aviWriter = cvCreateVideoWriter(m_sFile,-1,m_dwRate,cvSize(m_width,m_height),1); //initializing video writer
    #else
      m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC('X','V','I','D'),m_dwRate,cvSize(m_width,m_height)); //initializing video writer
    #endif
  }
 
  
  if(!m_aviWriter)
  {
    std::cout << "errors initializing video writer...correct video file path? on linux: ffmpeg must be included in OpenCV.";
    return false;
  }

  return true;
}
static Pointer mitk::MovieGeneratorOpenCV::New (  ) [static]

Reimplemented from mitk::MovieGenerator.

void mitk::MovieGeneratorOpenCV::SetFileName ( const char *  fileName ) [virtual]

filename under which movie is saved

Reimplemented from mitk::MovieGenerator.

Definition at line 33 of file mitkMovieGeneratorOpenCV.cpp.

{

  m_sFile = fileName;
}
void mitk::MovieGeneratorOpenCV::SetFourCCCodec ( char *  codec ) [inline]

Definition at line 44 of file mitkMovieGeneratorOpenCV.h.

  {
    m_FourCCCodec = codec;
  }
bool mitk::MovieGeneratorOpenCV::TerminateGenerator (  ) [protected, virtual]

called after the last frame is added

Implements mitk::MovieGenerator.

Definition at line 116 of file mitkMovieGeneratorOpenCV.cpp.

{
  if (m_aviWriter) 
  {
    cvReleaseVideoWriter(&m_aviWriter);
  }
  return true;
}

Member Data Documentation

frame rate

Definition at line 67 of file mitkMovieGeneratorOpenCV.h.

Referenced by MovieGeneratorOpenCV().

const char* mitk::MovieGeneratorOpenCV::m_sFile [protected]

name of output file

Definition at line 64 of file mitkMovieGeneratorOpenCV.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines