c++ - 视频未写入文件

标签 c++ opencv

我正在使用 opencv 直接从网络摄像头捕获视频并将其保存为 avi 文件。我使用了以下代码:

 #include "StdAfx.h"


using namespace std;
using namespace cv;


int _tmain()
{
    VideoCapture src;
    src.open(1);
    if(!src.isOpened())
    {
        cout<<"could not open camera\n";
        return -1;
    }
    else
    {
        cout<<"camera opened\n";
    }

    int ex=static_cast<int>(src.get(CV_CAP_PROP_FOURCC));
    Size s(Size((int)src.get(CV_CAP_PROP_FRAME_WIDTH),(int)src.get((CV_CAP_PROP_FRAME_HEIGHT))));
    VideoWriter out;
    out.open("out.avi",ex,20,s);
    while(1)
    {
        Mat im;
        src>>im;
        imshow("vid",im);
        out<<im;
        char c;
        c=cvWaitKey(50);
        if(c==27)
            break;
    }

    system("pause");
}

所有头文件都包含在 stdafx.h 中。 但实际上我得到了一个大小为 0bite 的 avi 文件。如何解决这个问题?我需要在不显示的情况下录制网络摄像头视频。


注意:我是 openCV 的新手,我使用的是 Visual Studio 2010

最佳答案

要在不显示网络摄像头的情况下运行应用程序,只需删除

imshow("vid",im);

out.avi大小为0,因为你在应用程序运行时打开它(当你打开视频流并在上​​面写入时),要打开你录制的视频,只需关闭应用程序结束对视频的写入,然后打开它。

关于c++ - 视频未写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162169/

相关文章:

c++ - 速记 c++ if else 语句

c++ - 第三方库不调用全局重载delete[]

C++ 外部模板实例化和 typedef (gcc)

C++ shell命令提示输入密码

c++ - 汇编程序消息:错误:拇指条件指令应放在IT block 中— `strexeq r1,r2,[r4]'

python - OpenCV 2.1 Python 绑定(bind)段错误

python - 如何使用 Python/OpenCV 从医学图像中分割单个细胞?

c++ - Qt - 汇编代码 ListView

c++ - 使用 Open CV 和 C++ 将彩色图像分成三个 channel ?

opencv - 是否有将全景图转换为小星球(立体投影)的直接公式