小弟要做毕业设计,题目是做个简单的图像处理软件,实现模糊,锐化,纹理等功能,我想问问用OpenGL做合适还是GUI合适?它们哪个容易上手一点?哪个适合做平面图像的处理?

解决方案 »

  1.   

    我想不管你用什么开发,模糊,锐化等图象处理功能应该都有图象算法,这个与opengl和gdi的关系不大
    另外,我觉得二维图象应该是gdi开发好些,3维建摸才用opengl
      

  2.   

    这些功能只用GDI+做就行了,方便快捷,
      

  3.   

    我觉得如果做毕业设计就要做一些出彩的东西,如果光是做点这种老套的东西没有什么新意,最后审核的时候也没加分的地方.
    同样是这些东西如果你加入GPU通用计算加速就不一样了,会让评审觉得你能够紧跟时代.
    所以用OpenGL或者DirectX都可以
      

  4.   

    你的问题只是跟算法有关,不用opengl也可以做的。
    opengl是一套图形开发工业标准,楼主所说的应该是图像处理
      

  5.   

    感觉opengl主要是用来开发三维的
      

  6.   

    因为不用涉及到3维图像的处理,你的是处理平面图像所以用GDI比较好!
    void TiDuRuiHuaDib::Menxianruihua()
    {
        LPBYTE p_data;     //原图数据区指针
    int wide,height;    //原图长、宽
    p_data=this->GetData ();
        wide=this->GetWidth ();
        height=this->GetHeight ();
    if (m_pBitmapInfoHeader->biBitCount<9) //灰度图像
    {
            LPBYTE p_temp=new BYTE [wide*height];    //开辟图像一缓冲区
    memset(p_temp,255,wide*height);  //初始化为255
    int temp;
    for(int j=1;j<height-1;j++)
    for(int i=1;i<wide-1;i++)
    {
    //根据双向一次微分公式计算当前像素的灰度值
    temp=(int)sqrt((p_data[wide*j+i]-p_data[wide*j+(i-1)])*
    (p_data[wide*j+i]-p_data[wide*j+(i-1)])+(p_data[wide*j+i]-p_data[wide*(j-1)+i])*
    (p_data[wide*j+i]-p_data[wide*(j-1)+i]));
    if (temp>=30)
    {   
    if((temp+100)>255)
    p_temp[wide*j+i]=255;
    else 
    p_temp[wide*j+i]=temp+100;
    }
    if (temp<30)
    p_temp[wide*j+i]=p_data[wide*j+i];
    }
    //将缓冲区中的图像复制回原图数据区
    memcpy(p_data,p_temp,wide*height);
    //删除缓冲区
    delete p_temp;
    }
    else //24位彩色
    {
    int DibWidth;    //原图长、宽、字节宽
    DibWidth=this->GetDibWidthBytes();   //取得原图的每行字节数
            BYTE *p_temp=new BYTE[height*DibWidth];
    for(int j=1;j<height-1;j++) // 每行
    {
    for(int i=3;i<DibWidth-3;i++) // 每列
    {
    int pby_pt1=0,pby_pt2=0,pby_pt=0;
    pby_pt1=p_data[DibWidth*j+i]-p_data[DibWidth*j+(i-3)];
    pby_pt2=p_data[DibWidth*j+i]-p_data[DibWidth*(j-1)+i];
    pby_pt=(int)sqrt(pby_pt1*pby_pt1+pby_pt2*pby_pt2);
    if (pby_pt>=30)
    {  
    if((pby_pt+100)>255)
    p_temp[DibWidth*j+i]=255;
    else 
    p_temp[DibWidth*j+i]=pby_pt+100;
    }
    if (pby_pt<30)
    p_temp[DibWidth*j+i]=p_data[DibWidth*j+i];
    }
    }
    memcpy(p_data,p_temp,height*DibWidth);  // 复制处理后的图像
    delete []p_temp;  //删除暂时分配内存
    }
    }
    这是一个门限锐化的代码,希望对LZ能有帮助!
      

  7.   

    Gui的源码可以找到很多,而且实现简单