Week13 閻覃的上課筆記
TRT複習
xxxxxxxxxx61glPushMatrix();2glTranslatef(0.4,0.5,0);3glRotatef(30,0,0,1);4glTranslatef(0.5,0.3,0);5drawArm();6glPopMatrix();安裝OpenCV
首先開啟終端,使用brew安裝opencv
xxxxxxxxxx11brew install homebrew/science/opencv
配置Clion的工程,CMakeLists.txt
xxxxxxxxxx121cmake_minimum_required(VERSION 3.7)2project(05052553_week13)34find_package(OpenCV)5#或者find_package(OpenCV3)6include_directories( ${OpenCV_INCLUDE_DIRS} )78set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -framework GLUT -framework OpenGL")910set(SOURCE_FILES main.cpp)11add_executable(05052553_week13 ${SOURCE_FILES})12target_link_libraries(05052553_week13 ${OpenCV_LIBS} )輸入以下的程式碼
xxxxxxxxxx121234using namespace std;5using namespace cv;67int main() {8 Mat srcImage = imread("img.jpeg");9 imshow("img", srcImage);10 waitKey(0);11 return 0;12}其中,圖片存到如下的目錄即可

運行結果如下

會自動轉動的地球
直接將老師的程式碼複製過來就好
xxxxxxxxxx531//#include <iostream>2//#include <opencv2/opencv.hpp>3///for cvLoadImage()4///for cvCvtColor()5///3D glut67GLUquadric * quad;8GLuint id;9float angle=0;10void display()11{ glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確12 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);13 glPushMatrix();///自動轉很帥14 glRotatef(90, 1,0,0);15 glRotatef(angle, 0,0,1);///自動轉很帥16 gluQuadricTexture(quad, 1);17 gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);18 glPopMatrix();///自動轉很帥19 glFlush();20}21void timer(int t)22{ glutTimerFunc(20, timer, 0);/// 1000 msec 50fps:20msec23 angle+=1;///自動轉很帥24 glutPostRedisplay();25}26int myTexture(char *filename)27{28 IplImage * img = cvLoadImage(filename); ///OpenCV讀圖29 cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)30 glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能31 GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID32 glGenTextures(1, &id); /// 產生Generate 貼圖ID33 glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID34 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖35 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖36 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點37 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點38 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);39 return id;40}4142void myInit()43{ quad = gluNewQuadric();44 id = myTexture("image.jpg");45}46int main(int argc, char**argv)47{ glutInit(&argc, argv);48 glutCreateWindow("3D");49 glutDisplayFunc(display); ///顯示50 glutTimerFunc(0, timer, 0);51 myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行52 glutMainLoop();53}
地球變茶壺
將gluSphere換成glutSolidTeapot即可。具體的程式碼如下
xxxxxxxxxx121void display()2{ glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確3 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);4 glPushMatrix();///自動轉很帥5 glRotatef(90, 1,0,0);6 glRotatef(angle, 0,0,1);///自動轉很帥7 gluQuadricTexture(quad, 1);8 //gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);9 glutSolidTeapot(0.3);10 glPopMatrix();///自動轉很帥11 glFlush();12}
沒有留言:
張貼留言