前几天验证算法的时候,为了提高验证速度,减少调试时间,打算将OpenCV中处理过程中的数据保存至Txt里面,供MATLAB读取。
这是之前看到的一篇OpenCV下读写txt的文档(原帖地址:http://blog.csdn.net/chenyusiyuan/article/details/7974378),但是这种写法的前提是预先知道Mat或者Vector数据结构中的元素类型(比如int,float),因此实际使用起来很不方便。
如果无法显示地指出Mat里面的数据类型,如何为Mat写模板函数呢?显而易见的是,OpenCV中重载的"<<"能够自动按Mat中的数据类型调整输出样式。下面给出OpenCV源代码(V2.4.4,位于modules/core/out.cpp中)的写法,按照这种思路,可以写出任何基于模板的Mat操作函数。
template<typename _Tp> static void writeElems(std::ostream& out, const _Tp* data,
int nelems, int cn, char obrace, char cbrace)
{
typedef typename DataType<_Tp>::work_type _WTp;
nelems *= cn;
for(int i = 0; i < nelems; i += cn)
{
if(c

本文探讨了在OpenCV中如何将处理过程中的矩阵数据保存到TXT文件,以方便MATLAB读取。作者指出,常规方法需要预先知道矩阵元素类型,存在不便。通过分析OpenCV源代码,提出了使用模板函数的方法,实现了不依赖具体数据类型的Mat和Vector<>()数据写入TXT文件的解决方案。

292

被折叠的 条评论
为什么被折叠?



