OpenCV安裝
8. Linker settings 要加上 cv210 / cxcore210 / highgui210
OpenCV第一個程式:week05-1_opencv.cpp
1. CodeBlocks開空白檔案, 取名為week05-1_opencv.cpp
2.下載一張圖片存到c:/取名為image.jpg
觀察課本範例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
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
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
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
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);///做好地球的貼圖
沒有留言:
張貼留言