Видео файлы в opencv - PullRequest
       14

Видео файлы в opencv

2 голосов
/ 30 марта 2012

Я хочу прочитать видеофайл (.avi или .mov) и обнаружить движение и края с помощью Opencv. Можете ли вы помочь мне с кодом? Я хочу создать графический интерфейс, в котором мы можем выбрать видеофайл, а затем мы можем нестифункции обработки изображений в opencv?

Ответы [ 4 ]

2 голосов
/ 30 марта 2012

Это работает для меня, я использую AVI файлы.Вызовите видео с именем файла, в вашем основном цикле получите следующий кадр и завершите работу, прежде чем завершить или перейти на другое видео.

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;
}

Примечание: Opencv не поддерживает воспроизведение аудио аудио-выход-с-видео-обработки-с-OpenCV

1 голос
/ 05 апреля 2012

Вы должны посмотреть примеры, включенные в папку python для opencv.Они будут найдены здесь: opencv \ samples \ python2

Там вы найдете множество основных и расширенных возможностей opencv (в формате cv2).Здесь также есть много учебных пособий (в основном, на c ++): http://opencv.itseez.com/doc/tutorials/tutorials.html

Чтение и запись видеоизображений здесь: http://opencv.itseez.com/trunk/modules/highgui/doc/reading_and_writing_images_and_video.html

Для первоначального захвата видео из 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
1 голос
/ 30 марта 2012

Самый короткий пример для чтения кадра из видео:

cap = cv::VideoCapture("foo.avi");
frame = cv::Mat;
cap >> frame;
...