C++ OpenCV从文本文件创建视频

C++ OpenCV从文本文件创建视频,c++,opencv,webcam,webcam-capture,C++,Opencv,Webcam,Webcam Capture,我正在尝试构建一个应用程序,它从网络摄像头或外部设备获取数据,将视频帧保存到文本文件中,然后从创建的文本文件中读取帧 我不知道保存到文本文件是否是个好主意,我很乐意接受建议 到目前为止,我已经完成了保存到文本文件的操作 我的问题是读取文本文件。基本上,我逐行阅读文本,但我不知道如何将文本转换为Mat对象 到目前为止,我的代码是: ifstream read_storage(new_vid_frm_path); if(!read_storage.is_open()) { perror("\

我正在尝试构建一个应用程序,它从网络摄像头或外部设备获取数据,将视频帧保存到文本文件中,然后从创建的文本文件中读取帧

我不知道保存到文本文件是否是个好主意,我很乐意接受建议

到目前为止,我已经完成了保存到文本文件的操作

我的问题是读取文本文件。基本上,我逐行阅读文本,但我不知道如何将文本转换为Mat对象

到目前为止,我的代码是:

ifstream read_storage(new_vid_frm_path);
if(!read_storage.is_open()) {
    perror("\n\n\n\t\t\t(-)FAIL : Can't Open SavedVideoFrames.txt\n\n\n\t\t\t");
    return -1;
}

VideoWriter *vid = new VideoWriter(new_vid_frm_path,CV_FOURCC('P', 'I', 'M', '1'),30,Size(vc.get(CV_CAP_PROP_FRAME_WIDTH),vc.get(CV_CAP_PROP_FRAME_HEIGHT)));
Mat line;
vector<Mat> vid_frms;
while ( getline (read_storage,line) ) {
    cout << line << '\n';

}

read_storage.close();

if(vid_frms.size() == 0){
    printf("\n\n\n\t\t\t(-)FAIL: Error In Frame\n\n\n\t\t\t");
    return -1;
}

for(size_t i = 0; i<vid_frms.size(); i++)
    (*vid).write(vid_frms[i]);

printf("\n\n\n\t\t\t(+)SUCCESS: Video Processing Complete \n\n\n\t\t\t ");
ifstream读取存储(新的视频frm路径);
如果(!read_storage.is_open()){
perror(“\n\n\t\t(-)失败:无法打开savedVideframes.txt\n\n\t\t\t”);
返回-1;
}
VideoWriter*vid=新的VideoWriter(新的vid\u frm\u路径,CV\u FOURCC('P','I','M','1'),30,大小(vc.get(CV\u CAP\u PROP\u FRAME\u WIDTH),vc.get(CV\u CAP\u PROP\u FRAME\u HEIGHT));
垫线;
矢量视频frms;
while(getline(读取存储,行)){
cout您可以将OpenCV中的任何内容(大约)保存到.xml或.yml文本文件中,然后使用OpenCV xml/YAML方法将其读回

<>我用文件的原生C++方法来重写这一点。

它是专门为您处理所有这些腿部工作而设计的。

您可以将OpenCV中的任何内容(几乎)保存到.xml或.yml文本文件中,然后使用OpenCV xml/YAML方法将其读回

<>我用文件的原生C++方法来重写这一点。


它是专门为您处理所有这些腿部工作而设计的。

与其保存为文本xml/yaml文件,不如另存为image.png格式?然后再将其作为视频输入帧进行处理。但是,如果您尝试在运行时创建视频,则会减慢整个过程。我同意@Ahmet Tavli的观点,事实上,大多数时候它都是不以这种方式保存资料要快得多,但从问题本身的精神来看,如果有充分的理由需要文本,就没有理由不使用可用的工具。与其保存为文本xml/yaml文件,不如另存为image.png格式?然后再将其处理为视频输入帧。不过,如果您尝试在运行时创建视频会减慢整个过程。我同意@Ahmet Tavli的观点,实际上大多数情况下,不以这种方式保存内容要快得多,但是在问题本身的精神范围内,如果你需要文本,没有理由不使用可用的工具。
while ( getline (read_storage,line) ) {
    cout << line << '\n';

}