2015-07-28 61 views
1

我是新手opencv及其开发。我正在使用相机供稿,并将该供稿转换为AVI格式的视频文件。当我尝试使用VLC播放器打开该文件时。没有任何东西显示给我。请在下面找到我使用的代码。任何帮助表示赞赏。(文件被写入文件,但我认为它与文件格式的问题)Mac OS X打开cv写入视频文件。错误

int main(int argc, char** argv){ 


     VideoCapture vcap(0); 
    if(!vcap.isOpened()){ 
     cout << "Error opening video stream or file" << endl; 
     return -1; 
    } 

    // VideoWriter video("/Users/venushka/Desktop/pre/ou.avi",vcap.get(CV_CAP_PROP_FOURCC),vcap.get(CV_CAP_PROP_FPS), 
        // cv::Size(vcap.get(CV_CAP_PROP_FRAME_WIDTH), vcap.get(CV_CAP_PROP_FRAME_HEIGHT))); 

    const int fps = 30.0; 
    vcap.set(CV_CAP_PROP_FPS, fps); 


    VideoWriter video("/Users/venushka/Desktop/pre/ou.avi", vcap.get(CV_CAP_PROP_FOURCC), fps, 
         cv::Size(vcap.get(CV_CAP_PROP_FRAME_WIDTH), vcap.get(CV_CAP_PROP_FRAME_HEIGHT))); 

    for(;;){ 

     Mat frame; 
     vcap >> frame; 
     video.write(frame); 
     imshow("Frame", frame); 
     char c = (char)waitKey(33); 
     if(c == 27) break; 
    } 
return 0; 
    } 

image of video file

回答

0

CV_CAP_PROP_FPS仅适用于视频,据我所知,从相机返回0。

手动设置你的FPS如下:

const int fps = 30.0; 
vcap.set(CV_CAP_PROP_FPS, fps); 

VideoWriter video("<path to avi>", vcap.get(CV_CAP_PROP_FOURCC), fps, 
        cv::Size(vcap.get(CV_CAP_PROP_FRAME_WIDTH), vcap.get(CV_CAP_PROP_FRAME_HEIGHT))); 
+0

对不起,仍然没有工作。我处理的上限无法通过VLC播放器打开。谢谢。 –

+0

我在我的iMac上试过了,它能正常工作。高度和宽度> 0? –