wxWidgets整合OpenGL+OpenCV+MathPlot(一种Windows和Linux通用的方法)

写在前面:其实本不应该发在Java方面的,只是最近在做的项目因为实时应用的关系没有使用Java,因此借这里记录一下心得。
最近在一个在Linux下开放的项目中用到了wxWidgets,当时在GTK+、QT和wx之间选择了很久,最终确定选择wxWidgets。有关这个框架的详细信息,请自行google之。

1. 整合OpenGL

WxWidgets中整合OpenGL是十分简单的,因为wxWidgets本身对OpenGL进行了封装,因此只需要按照example中的例子进行编写即可。一种常见的方法是继承wxGLCanvas类,将EVT_PAINT的回调函数进行重载即可。一段示例代码如下:
 

2. 整合OpenCV

这个话题在网上有过讨论,在OpenCV中文论坛中提出了一种向HDC绘图的方法。不过这种方法的局限在于:HDC是Windows平台下特有的结构,在Linux下是不可行的。
其实OpenCV的核心是IplImage结构,基本上所有的OpenCV绘图语句以及相应的算法都可以通过这个结构衍生出来。因此,一种直接的想法是如何将IplImage转换为wxWidgets中的wxImage类型,这样就可以直接在wxWidgets绘制IplImage类型的数据了。于是在网上寻找后,在一个国外论坛中找到了现成的代码如下:
 
进行这样的转换后,我们就直接可以在wxWidgets中使用OpenCV的接口。

3. 整合MathPlot

MathPlot是sourceforge上的一个开源项目,其功能是使用wxWidgets提供的绘图方法构建操作DC绘图的高级接口。这个项目的源代码十分简单,只有两个文件,但是功能却很实用。我在sourceforge上给了好评。
MathPlot内部实现了坐标轴的拖拽、平移和缩放,将图形划分为Layer,并且引入了动态Layer的概念,即在这个Layer上绘制的图形可以通过重设局部坐标系的原点基准坐标实现移动,并绘制轨迹。而且,MathPlot内部实现了双缓冲,因此,这个框架对于需要实时显示轨迹的简单应用来说具有很好使用价值。
由于MathPlot直接使用了wxWidgets的绘图接口,因此其整合十分简单,只需要在需要绘制的Panel上使用MathPlot提供的接口即可实现整合。
以上简单说明了wxWidgets如何整合OpenGL、OpenCV和MathPlot三种不同的绘图框架,最后给一个将三种绘图方法用在同一个窗口中实现不同功能的实例:
整合示例



转自:http://www.blogjava.net/feenn/archive/2011/01/16/343045.html

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值