2024年3月21日 星期四

電腦圖學 Week05 🥴

OpenCV安裝

1. 安裝 OpenCV 2.1

2. 安裝第三步驟, Add OpenCV to system PATH(勾第2或3個, 不要勾第1個)

3. 目錄不要改,要用預設的

4. 開檔案總管檢查 C:\ 多了 OpenCV2.1 目錄裡面有 include / lib / bin

5. 開啟CodeBlocks做設定(settings>compiler), 有三個地方要加

6. Search directories > Compiler 要加上 C:\OpenCV2.1\include

7. Search directories > Linker 要加上 C:\OpenCV2.1\lib

8. Linker settings 要加上 cv210 / cxcore210 / highgui210

OpenCV第一個程式:week05-1_opencv.cpp

1. CodeBlocks開空白檔案, 取名為week05-1_opencv.cpp

2.下載一張圖片存到c:/取名為image.jpg

3. 打三行程式, 讓圖片顯示
#include <opencv/highgui.h>
int main()
{///Intel performance library
    IplImage * img = cvLoadImage("c:/image.jpg");
    cvShowImage("week05", img);
    cvWaitKey(0);
}

觀察課本範例Texture.exe

1. 下載課本的範例 https://jsyeh.org/3dcg10 windows.zip(win32) 及 data.zip(data)

2. windows.zip 先解壓縮, data.zip 直接點開拉到windows資料夾

3. 執行 Texture.exe

4. 可以改 glTexCoord2f(tx, ty); 貼圖座標, glVertex3f(x, y, z); 頂點

整合OpenCV和OpenGL:week05_opencv_cvLoadImage

1. moodle下載 freeglut 拖到桌面

2. 把桌面\freglut\lib\libfreeglut.a 複製成 libglut32.a

3. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week05_opencv_cvLoadImage

4. GLUT要選桌面的 freeglut

5. 貼上11行GLUT程式
#include <GL/glut.h>
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_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05");
    glutDisplayFunc(display);
    glutMainLoop();
}

6. 在加三行程式(week05-1_opencv.cpp)讓圖片跟茶壺同時出現

myTexture貼圖程式:week05_opencv_opengl_myTexture

1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week05_opencv_opengl_myTexture

2. GLUT要選桌面的 freeglut 

3. 複製老師的myTexture 18行程式碼
(https://gist.github.com/jsyeh/5ed01210559721ec71b659b3ffed2dd7)

4. 18行程式碼後面再加上一個程式碼(week05_opencv_cvLoadImage)

5. 刪除原本的 2行加上1行, 讓圖片貼在茶壺上
IplImage * img = cvLoadImage("c:/image.jpg");//刪除
cvShowImage("opencv", img);//刪除
myTexture("c:/image.jpg");//新增

加座標:week05_opencv_opengl_myTexture_glTexCoord2f

1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week05_opencv_opengl_myTexture_glTexCoord2f

2. GLUT要選桌面的 freeglut 

3. 貼上上一個程式碼, 再加上幾行, 讓茶壺後面加上背景圖(倒的)
glBegin(GL_POLYGON);
        glTexCoord2f(0, 0); glVertex2f(-1, -1);
        glTexCoord2f(0, 1); glVertex2f(-1, +1);
        glTexCoord2f(1, 1); glVertex2f(+1, +1);
        glTexCoord2f(1, 0); glVertex2f(+1, -1);
glEnd();

會自轉的地球:week05_rotating_earth

1. 找一張地球的滿版圖片, 存到c:/取名為earth.jpg

2. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week05_rotating_earth

3. GLUT要選桌面的 freeglut 

4. 貼上week05_opencv_opengl_myTexture的程式碼, 再加上幾行
GLUquadric * quad = NULL;
float angle = 0;
glEnable(GL_DEPTH_TEST);
    glPushMatrix();
        glRotatef(90, 1, 0, 0);
        glRotatef(angle++, 0, 0, 1);
        gluSphere(quad, 1, 30, 30); ///glutSolidTeapot( 0.3 );
    glPopMatrix();
glutIdleFunc(display);
myTexture("c:/earth.jpg");
quad = gluNewQuadric();///把這顆指標指好
gluQuadricTexture(quad, 1);///做好地球的貼圖

沒有留言:

張貼留言