繁体   English   中英

opencv中的视频文件

[英]Video files in opencv

我想读取视频文件(.avi或.mov)并使用Opencv检测运动和边缘。可以帮我提供代码吗?我想创建一个GUI,我们可以在其中选择视频文件,然后我们就可以进行图像处理了opencv中的函数?

这对我有用,我正在使用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

您应该查看opencv的python文件夹中包含的示例。 它们将在这里找到: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

从视频中读取帧的最短示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM