Week 07
Week07-1.1
Step 2:將 data.zip 及 windows.zip 解壓縮並將 data資料夾 拉進 windows資料夾中
Step 3:打開 Texture.exe ,觀察其程式碼與相互關係
Week 07-1.2
考試練習:點我以轉到練習網頁
Week 07-2.1 圖檔讀取
Step 1:先下載 OpenCV-2.1.0,並在Install Options介面,點選 Add OpemCV to the system Path for current user
Step 2:打開Codeblock,並點選Setting-Compiler
Step 3:先點選Search directories,選擇Compiler,並按Add 輸入:C:\OpenCV2.1\include
Step 4:選擇Linker,並Add輸入:C:\OpenCV2.1\lib
Step 5:回到上方的Linker settings,在Link libraries框中Add:cv210、cxcore210、highgui210
程式碼:
#include<opencv/highgui.h>
int main()
{
IplImage * img = cvLoadImage("image.jpg");
cvShowImage("week07",img);
cvWaitKey(0);
}
Step 7:從網路上下載圖檔,注意:圖檔位置必須與此程式檔在同一位置,並且圖檔名稱必須 與cvLoadIamge()中的名稱相符
Step 8:觀察執行結果,完成!
Week07-2.2
Step 1:開啟一個GLUT project
Step 2:複製下列程式碼進GLUT projcet
程式碼:
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <GL/glut.h>
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename);
cvCvtColor(img,img, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
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);
return id;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week07 texture");
glutDisplayFunc(display);
myTexture("Earth.jpg");
glutMainLoop();
}
Step 3:把earth圖檔複製進freeglut/bin/,並改名為:Earth.jpg
Step 4:執行程式,可發現茶壺的材質被改成了Earth.jpg的圖檔

Week 07-3.1
Step 1:建立GLUT projcet
Step 2:複製下列程式碼並取代原本程式碼
程式碼:
#include <opencv/highgui.h> ///使用 OpenCV 2.1 比較簡單, 只要用 High GUI 即可
#include <opencv/cv.h>
#include <GL/glut.h>
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename);///讀取圖檔
cvCvtColor(img,img, CV_BGR2RGB);///轉顏色
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
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);
return id;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glTexCoord2f(0,0);glVertex2f(-1,+1);
glTexCoord2f(1,0);glVertex2f(+1,+1);
glTexCoord2f(1,1);glVertex2f(+1,-1);
glTexCoord2f(0,1);glVertex2f(-1,-1);
glEnd();
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week07 texture");
glutDisplayFunc(display);
myTexture("earth.jpg");
glutMainLoop();
}
Step 3:要記得:freeglut/bin/中必須要有Earth.jpg
Step 4:觀察並執行程式執行結果,完成!
Week 07-3.2
Step 1:建立GLUT project
Step 2:取代原本程式碼,改為下列程式碼:
程式碼:
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <GL/glut.h>
GLUquadric * sphere = NULL;
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename);
cvCvtColor(img,img, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
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);
return id;
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0,-1,0);
glRotatef(90, 1,0,0);
gluQuadricTexture(sphere, 1);
gluSphere(sphere, 1, 30, 30);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week10 texture background");
glutIdleFunc(display);
glutDisplayFunc(display);
myTexture("Earth.jpg");
sphere = gluNewQuadric();
glEnable(GL_DEPTH_TEST);
glutMainLoop();
}
Step 3:將圖檔下載並改為 myEarth.jpg
Step 4:執行程式,並觀察執行結果,完成!






.png)

沒有留言:
張貼留言