读书人

Ubuntu上为OpenCV配置wxWidgets/OpenG

发布时间: 2012-08-16 12:02:15 作者: rapoo

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();} 


















读书人网 >编程

热点推荐