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. 直接修改剛剛茶壺的程式碼
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);
}
```
沒有留言:
張貼留言