(*^ω^*) 喵~Week07
➽ 防疫期間 Teams遠距上課
- 登入 Microsoft office : ms1.mcu.edu.tw
- 帳號:學號@ms1.mcu.edu.tw
- 密碼:學號後四碼+西元出生年月日(預設)
- 忘記密碼要去 www1.mcu.edu.tw 申請,千萬不可以點 [忘記密碼]
 |
| 登入後畫面 |
- 進入Teams >> 點擊團隊 >>加入電腦圖學 >> 加入課程
 |
| Teams 畫面 |
 |
| 上課畫面 |
➽ OpenCV
- 照著安裝 >> 要選 Add OpenCV to the PATH

- 打上程式碼
- #include <opencv/highgui.h>///high高級的 gui使用者介面
- int main()
- {
- IplImage * img=cvLoadImage("a.jpg");///讀入圖檔
- cvNamedWindow("week07");///開視窗
- cvShowImage("week07", img);
- cvWaitKey(0);///等你按鍵繼續
 |
| 執行結果 |
- }
➽ 貼圖 Texture(期中會考)
- 網址:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
- 下載 [data][win32][glut32.dll] 三個檔案
- [windows]解壓縮>>開啟[windows]資料夾>>將[data]壓縮裡的資料夾和[glut32.dll]拉入[windows]資料夾
- 開啟 Texture.exe
➷➷自己動手試試看
- 同之前先下載freegult>>將lib裡的libfreeglut.a複製一份並改名libglut32.a
- 開啟Codeblocks>>開啟new project>>OpenGL
- 在 freegult>>bin>>放入一張圖片命名為 image.jpg (此為世界地圖)
- OpenCV 2.1 要設定好!!!
- 貼上老師給的程式碼
- #include <opencv/highgui.h> ///for cvLoadImage()
- #include <opencv/cv.h> ///for cvCvtColor()
- #include <GL/glut.h> ///3D glut
- #include <stdio.h>
- float angle=0; ///自動轉很帥
- GLUquadric * quad;
- void display()
- { glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();///自動轉很帥
- glRotatef(90, 1,0,0);
- glRotatef(angle, 0,0,1);///自動轉很帥
- gluQuadricTexture(quad, 1);
- gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);
- glPopMatrix();///自動轉很帥
- glFlush();
- angle+=1;///自動轉很帥
- }
- void myInit()
- {///圖檔要準備好,放在 in ... 的目錄
- /// C:\Users\Administrator\Desktop\freeglut\bin
- quad = gluNewQuadric();
- IplImage * img = cvLoadImage("image.jpg"); ///OpenCV讀圖
- cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
- glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
- GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
- glGenTextures(1, &id); /// 產生Generate 貼圖ID
- glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
- 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);
- } ///最後一行最難/最重要, 所貼圖影像的資料都設定好
- void timer(int t)
- {/// 1000 msec 50fps:20msec
- glutTimerFunc(20, timer, 0);
- //printf("timer now\n");
- glutPostRedisplay();
- }
- int main(int argc, char**argv)
- { glutInit(&argc, argv);
- glutCreateWindow("3D");
- glutDisplayFunc(display); ///顯示
- //glutIdleFunc(display);///自動轉很帥 (閒閒沒事幹, 就重畫)
- glutTimerFunc(0, timer, 0);
- myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
- glutMainLoop();
- }
 |
| 執行結果 |
沒有留言:
張貼留言