Video files in opencv

前端 未结 4 677
南方客
南方客 2021-02-04 22:37

I want to read video file(.avi or .mov) and detect motion and edges using Opencv.Can u help me with code?I want to create a GUI in which we can select the video file,then we can

相关标签:
4条回答
  • 2021-02-04 23:08

    How to read a video file:

    • Read video file and display it on a window (C API)
    • Read video file and display it on a window (C++ API)
    • Read video file, convert it to grayscale then display it on a window (C API)

    How to track/detect motion:

    • Opencv Motion detection with tracking
    • How to do motion tracking of an object using video?
    • The OpenCV Video Surveillance / Blob Tracker Facility

    How to detect edges/countours:

    • Using cvCanny()
    • Using cvCanny() and cvFindContours()
    • Using cvCornerHarris()

    And for more info on how to detect shapes, check this post.

    0 讨论(0)
  • 2021-02-04 23:14

    The shortest example for reading a frame from a video :

    cap = cv::VideoCapture("foo.avi");
    frame = cv::Mat;
    cap >> frame;
    
    0 讨论(0)
  • 2021-02-04 23:21

    This works for me, I'm using AVIfiles. Call video withe filename, in your main-loop get the next frame and shutdown before terminating or changing to another video.

    IplImage  *videoframe;
    int videoFps;    
    CvCapture *videoCapture=NULL;
    
    int video(char *videoFile) {
        int       key;
        /* load the AVI file */
        videoCapture = cvCaptureFromAVI( videoFile );
        /* always check */
        if( !videoCapture )
            return 0;    
        /* get fps, needed to set the delay */
        videoFps = ( int )cvGetCaptureProperty( videoCapture, CV_CAP_PROP_FPS );
        /* display video */
        cvNamedWindow( "video", 0 );
    }
    
    void videoNext() {
            if ( ! videoCapture ) return;
            videoframe = cvQueryFrame( videoCapture );
            if( !videoframe ) return;
            cvShowImage( "video", videoframe );
            /* quit if user press 'q' */
            int key = cvWaitKey( 1000 / videoFps );
    }
    
    void videoShutdown() {
        /* free memory */
        cvReleaseCapture( &videoCapture );
        cvDestroyWindow( "video" );
        return;
    }
    

    Note: Opencv doesn't support audio playback On how to use ffmmpeg with opencv see audio-output-with-video-processing-with-opencv

    0 讨论(0)
  • 2021-02-04 23:24

    You should look at the samples included in the python folder for opencv. They will be found here: opencv\samples\python2

    There you will find many of the basic and advanced features of opencv (in the cv2 format) demonstrated. There are also many tutorials (mainly in c++) on the website here: http://opencv.itseez.com/doc/tutorials/tutorials.html

    Reading and writing video images is here: http://opencv.itseez.com/trunk/modules/highgui/doc/reading_and_writing_images_and_video.html

    For initial video capture from AVI:

    import cv2
    import cv2.cv as cv
    import numpy as np
    
    cap = cv2.VideoCapture(filename)
    img = cv2.VideoCapture.read()
    if img:
       print img.get(cv.CV_CAP_PROP_FRAME_HEIGHT)
       print type(img)
    # loop through rest of frames reading one at a time
    
    0 讨论(0)
提交回复
热议问题