前几天验证算法的时候,为了提高验证速度,减少调试时间,打算将OpenCV中处理过程中的数据保存至Txt里面,供MATLAB读取。
这是之前看到的一篇OpenCV下读写txt的文档(原帖地址:http://blog.youkuaiyun.com/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