使用 vector保存mat

使用vector<Mat>保存视频流时需要注意:

void get_video_infor(string video)
{
    VideoCapture capture(video);
    Mat frame;
    capture_and_frame_is_ok(capture, frame); // 自写程序,用来判断capture正确打开,并成功取得第一帧。

    vector<Mat> frames;
    while (!frame.empty()) {
        show_index(frame, capture);
        imshow("frame", frame);
        frames.push_back(frame);
        key_control(waitKey(1));
        capture >> frame;
    }
}

这样保存,会出现vector<Mat>中所有的指针都是指向的frame所指向的数据。也就是 程序执行后,frames中所有的元素指向的都capture最后一帧

可以这么理解:

1,vector<Mat>中保存的都指针,push_back保存指针。

2,capture >> frame,只是将数据写入到frame所指向的空间,并没有改变指针。


所以每新加一个帧,都要用新的,修改如下:

void get_video_infor(string video)
{
    VideoCapture capture(video);
    Mat frame;
    capture_and_frame_is_ok(capture, frame);

    vector<Mat> frames;
    while (!frame.empty()) {
        Mat tem_frame = frame.clone(); // 创建新指针,并写入数据
        show_index(frame, capture); // 自写程序,将当前所播放的比率写到帧上,方便知道播放了多少。
        imshow("frame", frame);
        frames.push_back(tem_frame);
        key_control(waitKey(1));
        capture >> frame;
    }
}

key_control 如下:

void key_control(char c)
{
    switch (c) {
        case 'p':
            waitKey(0);
            break;
        case 27:
            exit(0);
            break;
        default:
            break;
    }
}



  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 你可以使用 scipy 库的 `savemat` 函数来保存 Matlab 格式的数据文件,它可以将 python 中的数据结构存储为 Matlab 的 `.mat` 文件。 代码示例: ``` import scipy.io as sio data = {'a': [1, 2.0, 3, 4+6j], 'b': (1, 2, 3, 4), 'c': 'hello world'} sio.savemat('file.mat', data) ``` 这样就可以在当前目录生成一个名为 `file.mat` 的文件,其中存储了 python 变量 `data` 中的数据。 ### 回答2: 在Python中,可以使用scipy库保存和读取MATLAB格式的数据。为了保存MAT文件,需要安装和导入scipy库。以下是使用Python保存MAT文件的步骤: 1. 导入所需的库: ```python import scipy.io as sio ``` 2. 创建要保存的数据: ```python data = {"name": "John", "age": 25, "city": "New York"} ``` 3. 使用save方法将数据保存MAT文件: ```python sio.savemat("data.mat", data) ``` 在上面的代码中,`"data.mat"`是要保存的文件名,可以根据需要进行更改。此处的`data`是要保存的数据。 此外,还可以选择性地保存指定变量: ```python sio.savemat("data.mat", {"name": data["name"], "age": data["age"]}) ``` 4. 保存完成后,将在工作目录中创建一个名为`"data.mat"`的MAT文件,其中包含保存的数据。 通过上述步骤,可以使用Python保存MAT文件并在MATLAB中使用。需要注意的是,保存的变量名和值类型应与MATLAB中的变量名和类型相匹配。 ### 回答3: 在Python中,我们可以使用scipy库来保存.mat文件,需要使用到scipy.io模块中的savemat()函数。以下是保存.mat文件的步骤: 1. 导入所需的模块: import scipy.io as sio 2. 创建一个字典对象,将数据存储在这个字典中: data = {'key1': value1, 'key2': value2, ...} 3. 使用savemat()函数保存.mat文件: sio.savemat('filename.mat', data) 这里'filename.mat'是你要保存的文件名。 例如,假设我们要保存一个包含向量和矩阵的.mat文件: ```python import numpy as np import scipy.io as sio # 创建一个字典对象,包含向量和矩阵 data = {'vector': np.array([1, 2, 3]), 'matrix': np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])} # 保存为.mat文件 sio.savemat('data.mat', data) ``` 这将创建一个名为"data.mat"的.mat文件,其中包含名为"vector"和"matrix"的两个变量。 请注意,保存的数据可以是任何形式的(例如,数组、矩阵、字典),只要它们是可序列化的数据类型即可。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值