2015年4月30日 星期四

02163042_王冠閔_week10

(1)openCV 2.1 設定 讀圖





int main()
{
    IplImage * img = cvLoadImage("image.jpg");
    cvShowImage("2D", img);
    cvWaitKey(0);
}


(2)openGL 設定

#include <GL/glut.h>
#include <opencv/highgui.h>
float angle = 0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0,1,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glFlush();
    angle+=0.1;
}
int main(int argc, char**argv)
{
    IplImage * img = cvLoadImage("image (7).jpg");
    cvShowImage("2D", img);
    //cvWaitKey(0);
    glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


(3)貼圖設定:地圖

void init()
{   IplImage * img = cvLoadImage("image (7).jpg"); ///讀圖檔
    cvCvtColor(img, img, CV_BGR2RGB); /// ConVerT Color 把圖 BGR 變成 RGB
    glEnable(GL_TEXTURE_2D); ///開啟 2D貼圖功能
    GLuint id; /// unsigned int 整數, 要存你的貼圖ID
    glGenTextures(1, & id ); /// Generate 產生貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); /// Bind 綁貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); ///參數設定 貼圖 S軸 如果超過了, 就REPEAT
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); ///參數設定 貼圖 T軸 如果超過了, 就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);
}   /// 很長的一行, 把 image的圖, 全部設成貼圖的內容


(4)有能力做小遊戲


沒有留言:

張貼留言