2016年4月30日 星期六

2016/4/25 Week10

Hw 1:
step1:到網路上下載opencv2.1.0安裝(安裝時計要勾PATH)
step2:解壓縮老師給的My Earth與freeflut
step3:freeglut.dll放入myEarth資料夾中
step4:從網路上找一張圖片
step5:在myEarth中執行exe檔


Hw 2:
Step1:開啟MyEarth.cbp


在Link Library中加入密碼
cv210
cxcore210
highgui210

在Compiler新增
OpenCV2.1\include
freeglut\include



在Linker新增
OpenCV2.1\lib
freeglut\lib


新增完以後執行結果
若出現檔案不再資料夾內,則要去OpenCV2.1/freeglut內尋找到對應的檔案
並且複製到My Earth 資料夾內


之後就可以執行檔案


#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
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();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///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);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2, 後面 OpenGL 9
    glutMainLoop();

}

2016年4月25日 星期一

Liu Workingshop Week X

課堂作業1:
MY eath
程式碼:
#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
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();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///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);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();
}

記得要
Compiler 加 C:\OpenCV2.1\include 和  C:\Users\USER\Desktop\freeglut\include
 Linker 加 C:\OpenCV2.1\lib 和  C:\Users\USER\Desktop\freeglut\lib
Linker settings  加 cv210   cxcore210  highgui210


BOZC Week10

课堂作业:

(一)Run earth.exe

1.下载openCV2.1 vs2008.exe
安装(add path)



2.解压缩 myEarth.zip
放入 image.jpg(自己找earth map)
改名为image.jpg
执行earth.exe.









(二)执行自己的exe

1.在project->build options->search directions->add
加入两个路径:



2.在linker内加入:



3.在linker setting内加入:



4.编译后将debug内的程序取代外面的earth.exe
并将image.jpg复制到freeglut->bin
全部完成后 运行。



(三)创建自己的档案







Week10 03160595

1.主軸:貼圖
2.實作:旋轉地球
3.產業接軌:VR
HTC Vive
Microsoft Holoens
資策會

1.跑myEarth
(1)下載openCV2.1(add path)
(2)解開myEarth
放入image.jpg
freeglut.dll


執行exe檔




2.
開專案
在左邊專案按右鍵,選擇bulid options


A.Search directory目錄Compiler 加include



加入cv210
cxcore210highgui210
地球轉動

3.自己建立程式執行
開新檔 貝殼console檔





加入cv210




week10

1

先下載 opencv2.1 然後找地圖圖片改名為 image

再下載 freeglut 解壓縮後將 freeglut.dll 和剛剛的圖片都放進my earth裡

就完成了會轉的地球如下



2
程式碼:
#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
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();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///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);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();
}








3
開新的專案(貝殼專案)


輸入連結和咒語像上個作業一樣
HTC Vive(3D繪畫)、Microsoft Hololens(3D 360度影像、影片)





week10

電腦圖學
(1)主軸:貼圖
(2)實作:旋轉地球
(3)產業接軌:VR、HTC Vive、Microsoft Hololens
(4)資策會、Resum、CGCG


TODO1:跑地球
(1)下載Open CV2.1.vs2008.exe安裝(add path)

(2)解開myEarth.zip
     放入image.jpg(地球圖)
     放入freeglut.dll


(3)結果


TODO2:自己的exe執行
(1)include
(2)lib
(3)dll

**Include:C:\Users\USER\Desktop\2016電腦圖學\freeglut-MinGW-2.8.1-1.mp\freeglut\include
                 C:\OpenCV2.1\include

**Bin:C:\Users\USER\Desktop\2016電腦圖學\freeglut-MinGW-2.8.1-1.mp\freeglut\lib
           C:\OpenCV2.1\lib

**咒語

(4)結果

0425 week10

作業一

(1)下載OpenCV2.1 vs2008.exe
     安裝 C:\OpenCV2.1 要勾PATH

(2)解壓縮myEarth
上網找一張地球的圖
檔名叫image

作業二

專案(左鍵)-Build Option

(A) Search Directory目錄
      Compiler 加 C:\OpenCV2.1\inClude
                          C:\Users\USER\Desktop\freeglut-MinGW-2.8.1-1.mp\freeglut\include
      
      Linker 加 C:\OpenCV2.1\lib
                        C:\Users\USER\Desktop\freeglut-MinGW-2.8.1-1.mp\freeglut\lib

按否

(B) 咒語
      CV210
      CXCore210
      highgui210

完成

作業三

開新專案

咒語
      CV210
      CXCore210
      highgui210
      glu32
      winmm
      gdi32
      opengl32
      freeglut

複製glut.dll




Week10

1.
地球複習
從傳的myEarth壓縮檔裡面,解壓縮後,放圖檔image.jpg(一定要這個名字,不然讀不到)
下載安裝opencv2.1.0,把freeglut.dll檔也放進去。


2.
新增freeglut&opencv的include路徑




在linker裡面放opencv的lib路徑


圖檔要放到freeglut\bin資料夾才可以執行
不然會錯!







把地球程式碼全部建好
把include&lib的路徑也都設好
按ctrl+移動是複製到別的資料夾 如果沒有按 就會是移動(原本的會不見)
freeglut.dll檔&圖檔也要
咒語變多了!!




可以把dll檔移到專案的資料夾
C:\Users\USER\Desktop\03160862hw10\bin\Debug資料夾裡面有執行檔
可以複製拉出來方便點


#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
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();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///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);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();
}

作業
都執行一次+履歷