2024年3月18日 星期一

電腦圖學坐牢中 week05

1. OpenCV

1-1.安裝OpenCV2.1(桌面)

1-2. 記得安裝第3步,改將 Add OpenCV to system PATH 打勾

1-3. 重新打開 codeblocks,在 search directories 加入2個目錄,compiler  C:\OpenCV2.1\include 及 linker  C:\OpenCV2.1\lib

1-4. 在 linker setting 裡,加入  cv210、cxcore210、highgui210

1-5. 開空白檔案,檔案名稱 week05-1_opencv.cpp

1-6. 寫程式碼

```cpp

#include <opencv/highgui.h>

int main()

{

    IplImage * img = cvLoadImage("c:/micky.jpg");

    cvShowImage("week05 micky", img); 

    cvWaitKey(0); 

}

```

2. 課本範例

2-1. 打開 https://jsyeh.org/3dcg10,並下載「win32(windows.zip)」 及 「data(data.zip)」
windows.zip = 程式執行檔,data.zip = 3D模型檔及圖檔

2-2. 在下載資料夾中把 windows.zip 解壓縮會產生 windows 資料夾,然後再將data.zip 裡面的 data 拉到剛剛的 windows 資料夾裡

2-3. 跑範例,並觀察

```cpp

glBegin(...);

    glTexCoord2f(tx, ty); glVertex2f(x, y);

    glTexCoord2f(tx2, ty2); glVertex2f(x2, y2);

    glTexCoord2f(tx3, ty3); glVertex2f(x3, y3);

    glTexCoord2f(tx4, ty4); glVertex2f(x4, y4);

glEnd();

```

3. 把米奇和茶壺同時叫出來

3-0. 安裝 freeglut,複製一個「libfreeglut.a」,並將其名稱改為「libglut32.a」 

3-1. File ⮕ New ⮕ Project,開啟 GLUT project,檔案名稱 week05-1_texture_opencv_cvLoadImage

3-2. 將十行程式碼貼上

3-3. 加上剛剛打過的3行程式碼

```

#include <opencv/highgui.h>

int main(int argc, char *argv[])

{

    IplImage * img = cvLoadImage("c:/micky.jpg");

    cvShowImage("opencv", img);

}

```

4. week05-2_texture_teapot_earth

4-1. File ⮕ New ⮕ Project,開啟 GLUT project,檔案名稱 week05-2_texture_teapot_earth

4-2. 修改、增加、剪貼程式碼

```cpp

#include <opencv/highgui.h>

#include <opencv/cv.h>

加入老師給的程式碼

int main(int argc, char * argv)

{

    myTexture("C:/earth.jpg"); ///下載的地球平面圖

}

```

5. week05-3_testure_polygon

5-1. File ⮕ New ⮕ Project,開啟 GLUT project,檔案名稱 week05-3_texture_polygon

5-2. 複製前一個的程式碼

5-3. 修改 display 中的程式

```cpp

void display()

{

    glBegin(GL_POLYGON);

        glTexCoord2f(0, 0); glVertex2f(-1, -1);

        glTexCoord2f(1, 0); glVertex2f(1, -1);

        glTexCoord2f(1, 0); glVertex2f(1, 1);

        glTexCoord2f(0, 0); glVertex2f(-1, 1);

    glEnd();

}

```

6. week05-4_texture_earth_rotating

6-1. File ⮕ New ⮕ Project,開啟 GLUT project,檔案名稱 week05-4_texture_earth_rotating

6-2. 貼上10行程式碼,加上老師贊助的18行貼圖程式碼

6-3. 加上3行程式碼

```cpp

float angle = 0; ///旋轉的角度

void display()

{

    glEnable(GL_DEPTH_TEST); ///開啟3D的功能

}    

int main(int argc, char ** argv)

{

    glutIdleFunc(display);

}

7. 把茶壺變成圓球

7-1. 直接修改剛剛茶壺的程式碼

```cpp

GLUquadric * quad = NULL; ///用來畫地球的quad二次曲面

void display()

{

    glRotatef(90, 1, 0, 0);

    gluSphere(quad, 1, 30, 30);

}

int main(int argc, char ** argv)

{

    quad = gluNewQuadric();

    gluQuadricTexture(quad, 1);

}

```

沒有留言:

張貼留言