OpenCV学习笔记(10)CvMat 与 STL vector 的格式转换与数据读写

2023-05-16

用STL vector来进行数组的数据读写非常方便,可以动态调整数组大小,不过在OpenCV里使用vector时,要保存vector数组的数据,就需要转换为 CvMat 格式。
比如有一个双通道数组:

vector points[2];

可以按如下方式来保存数据:


int len = points[0].size();
CvMat* pts = cvCreateMat(2,len,CV_32FC2);
for (i=0;i<2;i++)
    for (j=0;j<len;j++)
    {
        ((float*)(pts->data.ptr + pts->step*i))[j*2] = points[i][j].x;
        ((float*)(pts->data.ptr + pts->step*i))[j*2+1] = points[i][j].y;
    }
CvFileStorage* fs = cvOpenFileStorage( "data.xml", 0, 
                    CV_STORAGE_WRITE);
cvWrite(fs, "points_matrix", pts);
cvReleaseFileStorage(&fs);   

反之,从本地xml文件中读入CvMat数组,再转换为 vector 格式,方式如下:


CvFileStorage* fs = cvOpenFileStorage( "data.xml", 0, 
                    CV_STORAGE_READ);
CvMat* pts = (CvMat*)cvReadByName(fs, 0, "points_matrix");
CvSize pts_size = cvGetSize(pts);
points[0].resize(pts_size.width);
points[1].resize(pts_size.width);
for (i=0;i<2;i++)
    for (j=0;j<pts_size.width;j++)
    {
         points[i][j].x = ((float*)(pts->data.ptr + pts->step*i))[j*2];
         points[i][j].y = ((float*)(pts->data.ptr + pts->step*i))[j*2+1];
    }
cvReleaseFileStorage(&fs);
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV学习笔记(10)CvMat 与 STL vector 的格式转换与数据读写 的相关文章

随机推荐

  • 常用开发资源整理(更新日:2017/4/26)

    说明 xff1a 为了方便 xff0c 今后将工作中用到一些常用的资源链接进行整理 xff0c 初衷是想发些各版本的冷资源 xff0c 免得在需要的时候花大量时间寻找 一 开发语言 1 Spring各版本压缩包下载 http repo sp
  • 博客地址迁移www.xiangquba.cn

    大家好 xff0c 非常感谢大家一直以来对我的关注 xff0c 博客有一年时间没有更新了 xff0c 其实我并没有停止分享 xff0c 只是这一年时间并没有在csdn上更新 xff0c 原因是因为起初csdn有一个自己给csdn发送短信绑定
  • FreeRTOS 任务函数里面的死循环

    任务函数是一个无限循环且不带返回值的函数 任务必须是死循环 xff0c 否则任务将经过 LR 返回 xff0c 如果 LR 指向了非法内存就会产生HardFault Handler xff0c 而 FreeRTOS 指向一个死循环 xff0
  • 使用libcurl异步发送http请求

    在工作中需要完成一个工具 xff0c 该工具主要的用途就是向指定的服务器和端口发送http请求 xff0c 为了提高性能 xff0c 采用多线程的方式进行 xff0c 同时采用libcurl的异步形式 代码如下 xff0c 在其中添加一些注
  • 【Kubernetes】K8S实践感受HPA的功能

    1 确保metrics server安装好 span class token punctuation span root 64 jdmaster span class token punctuation span span class to
  • 拓扑结构与IP地址划分

    拓扑结构 分为总线型 星型和环形 环形要比星型的可靠性更高 公司的网络拓扑结构是星型 中心是交换机 IP发展 第一阶段 分为A E类 第二阶段 子网划分 第三阶段 无类域间路由 现在多采用这一种 不仅满足大网分小 也满足子网合成超网 无类域
  • 多网卡udp绑定问题

    在多网卡机器上 udp包 协议会自动根据路由最优选择从哪个网卡发数据包出去 即使你在此之前把改socket绑定到了另一个网卡上 参考文章 https blog csdn net Scarlett OHara article details
  • QIODevice::readyRead()

    void QIODevice readyRead This signal is emitted once every time new data is available for reading from the device 每次当新数据
  • 论文投稿参考——如何撰写和发表SCI论文

    如何撰写和发表SCI论文 汪景秀 提要 对从事基础研究的科学工作者 能否在SCI收录的杂志发表论文 是能否进入学术前沿 在国际公认的同一个平台上参与学术竞争 做出原创性贡献的一个基本标志 那么怎样的论文才是合格的 xff1f 本文提出一些建
  • Win7电脑遇到蓝屏,并报错:IRQL NOT LESS OR EQUAL

    这一阵电脑老是蓝屏 xff0c 重启后window和360都检测到之前发生过蓝屏 xff0c 但是都不能够修复成功 一开始直接在百度上搜电脑蓝屏 xff0c 也没啥大的收获 直到有次注意到蓝屏时还有错误类型 xff1a IRQL NOT L
  • VS使用收获总结

    诊断工具在调试 gt 窗口 gt 显示诊断工具 报CL exe问题 可能是IDE的问题 比如写一个最简单的hello world代码来进行检验 可以在查找时使用正则表达式 xff0c 比如想要搜索 行尾为 61 1 xff1b 的文本 可以
  • 进程间的mutex

    设两个进程共用一个临界资源的互斥信号量mutex 61 1 xff0c 当mutex xff1d xff0d 1时表示 一个进程进入了临界区 xff0c 另一个进程等待 没有一个进程进入临界区 两个进程都进入临界区 两个进程都在等待 互斥信
  • 128种chatGPT可以为人类做的事情

    1 充当英语翻译 充当英语翻译员 拼写纠正员和改进员 xff0c 我会用任何语言与你交谈 xff0c 你会检测语言 xff0c 翻译它并用我的文本的更正和 改进版本用英语回答 2 充当词典 充当英英词典 xff0c 对于给出的英文单词 xf
  • thing_10

    Choose Your Tools with Care Modern applications are very rarely built from scratch They are assembled using existing too
  • Distinguish Business Exceptions from Technical 21

    Distinguish Business Exceptions from Technical There are basically two reasons that things go wrong at runtime technical
  • Do Lots of Deliberate Practice 22

    Do Lots of Deliberate Practice Deliberate practice is not simply performing a task If you ask yourself Why am I performi
  • 只抓 5 件事,让管理更有效

    管理的第一性原理 效率 效益 环境的巨大不确定性带来前所未有的挑战 练好基本功 xff1a 提升管理质量 5件事 xff1a 计划 组织 控制 领导 人员配备 计划的意义 集中资源 注意力管理 协同 让计划滚动起来 控制 xff1a 计划
  • 二维vector,clear()操作请慎重,当心遇到vector subscript out of range问题

    问题 今天想要用vector实现二维数组的功能 尝试了把二维vector 谁知道刚上手就遇到了雷 代码的形式大致如下 vector lt vector lt int gt gt vv 3 vv clear for int i 61 0 i
  • UART详解

    UART 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART xff09 是一种串行异步收发协议 xff0c 应用十分广泛 UART工作原理是
  • OpenCV学习笔记(10)CvMat 与 STL vector 的格式转换与数据读写

    用STL vector来进行数组的数据读写非常方便 xff0c 可以动态调整数组大小 xff0c 不过在OpenCV里使用vector时 xff0c 要保存vector数组的数据 xff0c 就需要转换为 CvMat 格式 比如有一个双通道