2015年4月30日 星期四

Free GLUT Test8

使用Code Block 運用openCV,freeglut
使用openCV匯入圖檔並開啟
使用freeglut將物件貼圖,增加新色彩





#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <Gl/glut.h>
#include <stdio.h>

void display(void);
void init(void);

GLUquadric * quad;
int main(int argc, char **argv)
{
    IplImage *img=cvLoadImage("02160295.jpg",1);
    cvNamedWindow("02160295_2D",0);
    cvResizeWindow("02160295_2D",852,379);
    cvShowImage("02160295_2D",img);
    //cvWaitKey(0);

    glutInit(&argc, argv);
    glutInitWindowSize(400, 400);
    glutCreateWindow("02160295_3D");

    quad=gluNewQuadric();

    glutDisplayFunc(display);
    glutIdleFunc(display);

    init();

    glutMainLoop();
}
float angle=0;
void display()
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(90,1,0,0);
        glRotatef(angle,0,0,1);
        //glutSolidTeapot(0.3);
        gluQuadricTexture(quad, 1);
        gluSphere(quad,0.5,30,30);
    glPopMatrix();
    glFlush();
    angle+=0.1;
}

void init()
{
    printf("***");
    IplImage *img = cvLoadImage("02160295.jpg");
    cvCvtColor(img, img, CV_BGR2RGB);
    glEnable(GL_TEXTURE_2D);  ///2D貼圖
    GLuint id; ///unsigned int //宣告貼圖編號
    glGenTextures(1,&id);///Generate產生貼圖編號  //一張圖 自動存貼圖編號
    //GLuing myID[10];
    //glGenTextures(10, myID);  ///一次存10張貼圖編號
    glBindTexture(GL_TEXTURE_2D,id);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,img->width,img->height,
                                  0,GL_RGB,GL_UNSIGNED_BYTE,img->imageData);
}

沒有留言:

張貼留言