2015年4月30日 星期四

林佳誼_week10

(1)複習上次Lesson32
(2)OpenCV 設定 讀圖
(3)OpenGL 設定
(4)貼圖設定:茶壺,地球
(5)有能力做小遊戲
                   

                  (2)
               下載OpenCV2.1
                                                            安裝OpenCV2.1

設定Directory
Complie:C:\opencv2.1\include
Link:C:\opencv2.1\lib


設定Link參數
cv210
cxcore210
highgui210



執行程式
#include <opencv/highgui.h>



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







(3)



                                                                  設定Directory
Complie:C:\opencv2.1\include
C:\user\Desktop\freeglut\include


                                                                       設定Directory

Link:C:\opencv2.1\lib
C:\user\Desktop\freeglut\lib

Link參數
freeglut
opengl32
glu32
gdi32
winmm

********橘色字是新增的程式碼



#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.jpg");
    cvShowImage("2D",img);
    //cvWaitKey(0);
    glutInit(&argc,argv);
    glutCreateWindow("3D");

    glutDisplayFunc(display);
    glutIdleFunc(display);

    glutMainLoop();
}





新增的程式碼
讓2D圖貼到3D圖上去

void init()
{   IplImage * img = cvLoadImage("image.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的圖, 全部設成貼圖的內容



GLUquadric *quad;

在display加
glRotatef(-90,1,0,0);
 gluSphere(quad,0.5,30,30); 


在main加
 quad=gluNewQuadric();






沒有留言:

張貼留言