2021年4月12日 星期一

𝔍𝔒𝔗𝔇-week08

電腦圖學_week08

2021/04/12(一)

        今日的上課內容:
  1. 下載下載moodle的程式
  2. 安裝路徑(圖一)
  3. 將檔案放入編譯器中
  4. 檔案和圖片放同一個地方(圖二)
  5. 成果(圖三)
  6. 改成用新專案放剛剛的程式(圖四)
  7. 把圖貼在茶壺上(圖五)
  8. 在背景放入圖片與茶壺融合(圖六)
        今日的程式碼:
        ////畫出圖形
  • #include <opencv/highgui.h>
  • int main()
  • {
  •     IplImage * img = cvLoadImage("0412.jpg");
  •     cvShowImage("week08", img);
  •     cvWaitKey(0);
  • }

        ////把圖貼在茶壺上
  • #include <opencv/highgui.h>
  • #include <opencv/highgui.h> ///使用 OpenCV 2.1 比較簡單, 只要用 High GUI 即可
  • #include <opencv/cv.h>
  • #include <GL/glut.h>
  • void init()
  • {
  •     IplImage * img = cvLoadImage("0412.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 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("week08 texture");

  •     init();

  •     glutDisplayFunc(display);
  •     glutMainLoop();
  • }
////合併背景與茶壺
  • #include <opencv/highgui.h>
  • #include <opencv/highgui.h> ///使用 OpenCV 2.1 比較簡單, 只要用 High GUI 即可
  • #include <opencv/cv.h>
  • #include <GL/glut.h>
  • void init()
  • {
  •     IplImage * img = cvLoadImage("0412.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 display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •         glBegin(GL_POLYGON);
  •             glTexCoord2f(0, 1); glVertex3f(-1,-1,0);
  •             glTexCoord2f(1, 1); glVertex3f(+1,-1,0);
  •             glTexCoord2f(1, 0); glVertex3f(+1,+1,0);
  •             glTexCoord2f(0, 0); glVertex3f(-1,+1,0);
  •         glEnd();
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • int main(int argc,char ** argv)
  • {
  •     glutInit(&argc, argv);
  •     glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week08 texture");

  •     init();

  •     glutDisplayFunc(display);
  •     glutMainLoop();
  • }


    今日的成果:

 

                                            ⬆️圖一

                                            ⬆️圖二



                                            ⬆️圖三
                                           
                                             ⬆️圖四
                                            
                                            ⬆️圖五

                                            ⬆️圖六




                





沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...