在openCV 2.4.3中以低于fps的fps写入视频

时间:2013-07-26 15:55:57

标签: c++ opencv video computer-vision

我正在尝试使用OpenCV 2.4.3编写.avi视频。 我要做的是:

  • 加载.avi视频
  • 在每一帧上做一些事情,最终放弃其中一些
  • 保存新视频

基本上,我所做的是:

  • 使用面部检测器并找到面孔
  • 如果未检测到脸部,则跳过该帧
  • 如果有面孔,在每个面上画一个矩形并在上面放一些文字

代码如下所示(跳过主要的精化部分,它不触及Mat alt帧):

VideoCapture cam("1.avi");
VideoWriter writer("1_det.avi", 
           cam.get(CV_CAP_PROP_FOURCC),
           cam.get(CV_CAP_PROP_FPS),
           cv::Size(cam.get(CV_CAP_PROP_FRAME_WIDTH),
           cam.get(CV_CAP_PROP_FRAME_HEIGHT)));

while(cam.read(image2.img)) {
    Mat alt = image2.img.clone();
    // finds faces, then:
    if(faces.size()==0) {
        for(int k=0;k<5;k++) cam.read(alt);
        continue;       
    }
    for(int f=0;f<faces.size();++f) {
        // do some stuff here, then draw some results:
        putText(alt, ss.str(), Point(faces[f].x,faces[f].y), FONT_HERSHEY_SCRIPT_SIMPLEX, 1, Scalar::all(255), 1);

        rectangle(alt, Point(faces[f].x,faces[f].y), Point(faces[f].x+faces[f].width,faces[f].y+faces[f].height), colors[f] , 3, 8, 0 );
    }

    writer << alt;

}

现在,由于我丢弃了大量的帧,我想以较低的FPS保存视频,如cam.get(CV_CAP_PROP_FPS)/2,但如果我尝试做类似的事情,视频会显示重复的第一帧并且在视频的整个持续时间内(虽然这是正确的)。

视频中是否有一些重要的东西......?

任何输入都将不胜感激。 感谢

0 个答案:

没有答案