Our Daily Bread

what I need to do ...

  • Continious learning -unlearn as necessary
  • Reach out to family & loves ones
  • Maintain fitness - strong core and clear IPPT
  • Pick up parenting skills
  • Save up and plan for renovation
  • Build passive business & investment income
  • Back up Data
  • Manage $ Cash flow
  • Learn sinan mori

Wednesday, June 15, 2011

OpenCV play video

During school days when i use OpenCV 1.1-2.0 for my final year project,
I had a hard time trying to capture video frame from .avi files.
I ran into codec issues having to convert my video dataset before i can capture
via OpenCV.

With the following code snippets below i am able to play .avi,.mpg and wmv files!


#include "highgui.h"
int main( int argc, char** argv ) {
  
    //Some validation can be included here for argv
    if( argc<2 ) return 1;
    CvCapture* capture = cvCreateFileCapture( argv[1] );
    if( !capture ) return 1;   
     /* get fps, needed to set the delay */
    int fps = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
    IplImage* frame;
    cvNamedWindow( "video", CV_WINDOW_AUTOSIZE );
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "video", frame );
        char c = cvWaitKey( 1000 / fps );
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "video" );
    return 0;
}

Writing your first OpenCV hello world program!



Download OpenCV 2.2 from SourceForge.
Download VisualC++ Express if you do not have an IDE

1. Create your new project for C++ , empty console application
2. Go to Tools > Option
3. Go to VC++ Directories
4. Add 2 new Include Directories (it's the path where you installed OpenCV, include folder):
- C:\OpenCV2.2\include
- C:\OpenCV2.2\include\opencv
5. Add 1 new Library Directory (it's the path where you installed OpenCV, lib folder):
- C:\OpenCV2.2\lib
6. Go to Linker in the left menu and select Input option
7. Add these entries on Additional Dependencies option:
"C:\OpenCV2.2\lib\opencv_core220d.lib"
"C:\OpenCV2.2\lib\opencv_highgui220d.lib"
"C:\OpenCV2.2\lib\opencv_video220d.lib" 
"C:\OpenCV2.2\lib\opencv_ml220d.lib"
"C:\OpenCV2.2\lib\opencv_legacy220d.lib"
"C:\OpenCV2.2\lib\opencv_imgproc220d.lib"

A sample hello world program :

#include "highgui.h"


int main ( int argc, char **argv )
{
  cvNamedWindow( "My Window", 1 );
  IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
  CvFont font;
  double hScale = 1.0;
  double vScale = 1.0;
  int lineWidth = 1;
  cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
              hScale, vScale, 0, lineWidth );
  cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font,
             cvScalar( 255, 255, 0 ) );
  cvShowImage( "My Window", img );
  cvWaitKey();
  return 0;
}
Run the program and you should see the above screen.


For OpenCV 2.3.1 
The steps are similar.
However the path varies depending on which build version you would want to use.
I am sticking with Win32 and VS2010


Some updates to the path:


5. Add 1 new Library Directory (it's the path where you installed OpenCV, lib folder):
- C:\OpenCV2.3\build\x86\vc10\lib


6. Go to Linker in the left menu and select Input option 


7. Add these entries on Additional Dependencies option


C:\OpenCV2.3\build\x86\vc10\lib\opencv_core231d.lib
C:\OpenCV2.3\build\x86\vc10\lib\opencv_highgui231d.lib
C:\OpenCV2.3\build\x86\vc10\lib\opencv_video231d.lib
C:\OpenCV2.3\build\x86\vc10\lib\opencv_ml231d.lib
C:\OpenCV2.3\build\x86\vc10\lib\opencv_legacy231d.lib
C:\OpenCV2.3\build\x86\vc10\lib\opencv_imgproc231d.lib



Quotes

  • You are your thoughts.The thoughts in your head are what institute the laws of attraction. You think therefore you are. - Joe Vitalli, The Laws of Attraction
  • Don't react blatantly in Anger and become a Zero - Papati
  • Don't miss out in the learning values of problems by over-looking the root causes but starting at the occurences - Raj
  • You can do almost anything if you have a steady income. Little or much, what matters is that you can count it, month after month.Without the regular flow of funds, you will be constantly distracted from you goals - Norm & Bo
  • Time is greater than money, you can never really buy time. Don't let time slip away. - Raj
  • Ignore technology advancement and you will either be left behind or you have to fork out more - Raj
  • Without passion nothing happens in life but without compassion the wrong things happen - Jan Eliasson
  • The poorer you are the more you need to plan and act wisely. Any undesired outcome you have little resource to manoeuvre.
  • “Life changes when you least expect it to. The future is uncertain. So, seize this day, seize this moment, and make the most of it.”
  • To get to where you want to go in life you must start from where you are - Tan
  • Maturity does not come with age,it comes with the acceptance of responsibilities - Tan

ACM TechNews