3

ビデオ ファイル (.avi または .mov) を読み込み、Opencv を使用してモーションとエッジを検出したいです。 opencvの機能?

4

4 に答える 4

2

これは私にとってはうまくいきます、私は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 で ffmmpeg を使用する方法については、audio-output-with-video-processing-with- opencv を参照してください。

于 2012-03-30T06:01:17.500 に答える
1

ビデオからフレームを読み取るための最短の例:

cap = cv::VideoCapture("foo.avi");
frame = cv::Mat;
cap >> frame;
于 2012-03-30T06:25:37.093 に答える
1

opencv の python フォルダーに含まれているサンプルを確認する必要があります。それらはここにあります: opencv\samples\python2

そこには、opencv (cv2 形式) の基本機能と高度な機能の多くが示されています。ここの Web サイトには、多くのチュートリアル (主に 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
于 2012-04-04T22:37:16.500 に答える