现在的位置: 首页 > 综合 > 正文

Movid 库分析

2013年10月04日 ⁄ 综合 ⁄ 共 1369字 ⁄ 字号 评论关闭

Movid
is the acronym for Modular Open Vision Interaction Daemon. It's a crossplatform and Open Source tracker, designed to be as modular as possible.

 

code download :http://github.com/tito/Movid

 

Movid思路分析

      Movid高度模块化,主要功能模块在tito-Movid-3d5b78b/src文件夹下面。模块moModule负责处理,模块间共享端口数据moDataStream。moModule体系通过moModule.h中的宏定义实现自动化绑定。

      模块间端口数据共享通过指针浅拷贝,共享内存, 因为movid只是可视化opencv,输入数据来源于camera或者video,对于二者opencv自动会管理每帧的管理,所以movid中moDataStream不需要管理端口数据的生命周期。

      moModule体系,包括在moDataStream中使用了多线程,偶对MT还只是理解皮毛,惭愧~

      moProperty中定义moModule的其他一些属性,比如canny算子需要的两个int型参数,定义如下:

 

 

      moPipeline里面管里创建整个可视化场景,特别是moPipeline::parse函数,通过解析字符串命令创建场景。

      Movid的界面在web上实现,movid.cpp中负责网络通信部分。

      最终用户在网页上,以连线的方式产生了一个场景图,从而生成一个模块间的调用序列,将这些字符串传给服务器,服务器端Movid解析产生结果,传给客户端,显示最终结果图片。所以这个角度说,Movid并不是所见即所得的编程,gui只是一种表示,跟gui层跟数据层是分离的。

      Movid的执行机制有点神奇,一直没有看到对所有模块进行拓扑排序的函数,难道通过MT就这可够了???研究ing~

      Movid演示例子,顺序创建结点,按照结点ID号遍历所有节点,调用poll / update函数。。。

demo screenshot:

【上篇】
【下篇】

抱歉!评论已关闭.