首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Ubuntu上为OpenCV配置wxWidgets/OpenGL以及三者混合编程

2012-08-16 
Ubuntu下为OpenCV配置wxWidgets/OpenGL以及三者混合编程OpenCV的GUI部分做的太简单了 复杂的功能难以实现

Ubuntu下为OpenCV配置wxWidgets/OpenGL以及三者混合编程

OpenCV的GUI部分做的太简单了 复杂的功能难以实现 整合其他库时接口兼容性等问题多多 真费事 写个手记以备用

安装和配置工程


安装wxwidgets(http://wiki.wxwidgets.org/Installing_and_configuring_under_Ubuntu)

idle events 

首先要定义好显示opencv或opengl的面板派生类,本例中用的是BasicDrawPane和BasicGLPane(会在后面讲到)

class BasicGLPane : public wxGLCanvas{    wxGLContext*m_context;CModel3DS * monkey;public:BasicGLPane(wxFrame* parent, int* args);virtual ~BasicGLPane();void resized(wxSizeEvent& evt);    void paintEvent(wxPaintEvent& evt);void paintNow();void render(wxDC& dc);DECLARE_EVENT_TABLE()};BEGIN_EVENT_TABLE(BasicGLPane, wxGLCanvas)EVT_PAINT(BasicGLPane::paintEvent) END_EVENT_TABLE()GLMmodel* pmodel1 = NULL;void BasicGLPane::paintEvent(wxPaintEvent& evt) {    wxPaintDC dc(this);    render(dc);}void BasicGLPane::paintNow() {    wxClientDC dc(this);    render(dc);}BasicGLPane::BasicGLPane(wxFrame* parent, int* args) :    wxGLCanvas(parent, wxID_ANY, args, wxDefaultPosition, wxDefaultSize,            wxFULL_REPAINT_ON_RESIZE){    m_context = new wxGLContext(this);    // To avoid flashing on MSW    SetBackgroundStyle(wxBG_STYLE_CUSTOM);    int argc = 1;    char* argv[1] = { wxString((wxTheApp->argv)[0]).char_str() };    glutInit(&argc, argv);//这里是opengl的初始化代码段 可以添加自己代码}BasicGLPane::~BasicGLPane() {    delete m_context;}void BasicGLPane::resized(wxSizeEvent& evt) {    Refresh();}void BasicGLPane::render(wxDC& dc) {   if (!IsShown())        return;   wxGLCanvas::SetCurrent(*m_context);    wxPaintDC(this);    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//这里是opengl的绘图代码段 可以添加自己代码    glFlush();    SwapBuffers();} 


















热点排行