2014年5月8日 星期四

Week12

▲今日目標:做出會動的人
TODO:木頭人偶
(1)上網找木頭人偶的照片 截成n張圖
(2)貼上程式碼
#include <GL/glut.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
IplImage *img1, *img2, *img3, *img4, *img5, *img6, *img7, *img8;
GLuint id1, id2, id3, id4, id5, id6, id7, id8;
float angleX=0;

void myTexture()
{
img1 = cvLoadImage("head.png");
img2 = cvLoadImage("body.png");
img3 = cvLoadImage("hand.png");
img4 = cvLoadImage("hand1.png");
img5 = cvLoadImage("hand2.png");
img6 = cvLoadImage("leg.png");
img7 = cvLoadImage("leg1.png");
img8 = cvLoadImage("leg2.png");

cvCvtColor(img1, img1, CV_BGR2RGB);
cvCvtColor(img2, img2, CV_BGR2RGB);
cvCvtColor(img3, img3, CV_BGR2RGB);
cvCvtColor(img4, img4, CV_BGR2RGB);
cvCvtColor(img5, img5, CV_BGR2RGB);
cvCvtColor(img6, img6, CV_BGR2RGB);
cvCvtColor(img7, img7, CV_BGR2RGB);
cvCvtColor(img8, img8, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
  glGenTextures(1, &id1);
  glGenTextures(1, &id2);
  glGenTextures(1, &id3);
  glGenTextures(1, &id4);
glGenTextures(1, &id5);
  glGenTextures(1, &id6);
glGenTextures(1, &id7);
glGenTextures(1, &id8);

glBindTexture(GL_TEXTURE_2D, id1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img1->width, img1->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img1->imageData); 

glBindTexture(GL_TEXTURE_2D, id2);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img2->width, img2->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img2->imageData);

glBindTexture(GL_TEXTURE_2D, id3);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img3->width, img3->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img3->imageData);

glBindTexture(GL_TEXTURE_2D, id4);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img4->width, img4->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img4->imageData);

glBindTexture(GL_TEXTURE_2D, id5);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img5->width, img5->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img5->imageData);

glBindTexture(GL_TEXTURE_2D, id6);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img6->width, img6->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img6->imageData);

glBindTexture(GL_TEXTURE_2D, id7);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img7->width, img7->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img7->imageData);

glBindTexture(GL_TEXTURE_2D, id8);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img8->width, img8->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img8->imageData);
}

void display()
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(angleX, 0,1,0);
    glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
    if(key=='a') angleX+=3;
    if(key=='b') angleX-=3;
    glutPostRedisplay();

}
void myLight()
{
    const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING); 
    glLightfv(GL_LIGHT0, GL_POSITION, light_position); 
}
int main()
{
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("week12");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    myLight();
    glutMainLoop();

}
(3)[Alt-P]Parameters加上-lcv -lcxcore -lhighgui (要小心要用空格與後面的格開哦!)
(4)把 c:\dev-cpp\bin\opencv\ 目錄裡面所有的 .dll 檔案, 都放到 c:\windows\system32
 裡面,但有些電腦不能接受你把一堆 dll 檔死命地往 c:\windows\system32 丟, 所以你可能要改放在 "同一個目錄中", 像在你桌面的那個專案目錄裡面!

沒有留言:

張貼留言