您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页复习参考题-1

复习参考题-1

来源:吉趣旅游网
0

复习参考题

3、请使用 OpenGL 和 GLUT 编写一个简单的图形程序,用于显示一个填充的白色矩形。其中矩形规定为(-0.8, -0.8)~(0.8, 0.8),程序窗口的大小为(200, 200),标题为“白色矩形”。 #include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.8, -0.8, 0.8, 0.8); glFlush(); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"白色矩形\"); glutDisplayFunc(Paint); glutMainLoop(); }

4、请使用 OpenGL 和 GLUT 编写一个简单的图形程序,用于显示一个填充的红色三角形。其中三角形的顶点分别是(-0.8, -0.8)、(0.8, -0.8)和(0, 0.8),程序窗口大小为(200, 200),标题 为“红色三角形”。 #include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1, 0, 0); glBegin(GL_TRIANGLES); glVertex2d(-0.8, -0.8), glVertex2d(0.8, -0.8), glVertex2d(0, 0.8); glEnd(); glFlush(); }

int main()

{ glutInitWindowSize(200, 200); glutCreateWindow(\"红色三角形!\"); glutDisplayFunc(Paint); glutMainLoop(); }

5、请使用 OpenGL 和 GLUT 编写一个简单的图形程序,用于演示点的反走样效果。要求使用线段(-0.6, -0.6)~(0.6, 0.6)上均匀分布的 5 个点(含端点),点的大小为 10.5 像素,程序 窗口的大小为(200, 200),标题为“点的反走样”。 #include void Paint() { double x; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); for(x = - 0.6; x <= 0.6; x += 0.3) glVertex2f(x, x); glEnd();

glFlush(); }

int main()

{ glutInitWindowSize(200, 200); glutCreateWindow(\"点的反走样\"); glutDisplayFunc(Paint); glPointSize(10.5);

glEnable(GL_POINT_SMOOTH); glutMainLoop(); }

6、请使用 OpenGL 和 GLUT 编写一个简单的图形程序,用于演示线段的反走样效果。其中线段的端点为(-0.6, -0.3)和(0.6, 0.3),线宽为 4.5 像素,程序窗口的大小为(200, 200),标题为“线段的反走样”。 #include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glVertex2f(-0.6, -0.6), glVertex2f(0.6, 0.6); glEnd(); glFlush(); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"线段的反走样\"); glutDisplayFunc(Paint); glLineWidth(5); glEnable(GL_LINE_SMOOTH); glutMainLoop(); } }}

25、请使用 OpenGL、GLU 和 GLUT 编写一个三维犹他茶壶程序。其中茶壶的半径为 1 单位,并远移 6.5 单位;观察体规定为:视场角=30 度,宽高比=1,近=1,远=100;程序窗口的大小为(200, 200),标题为“尤他茶壶”。 #include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); gluPerspective(30, 1, 1, 100); glTranslatef(0, 0, - 6.5); glutSolidTeapot(1); glFlush(); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"尤他茶壶\"); glutDisplayFunc(Paint); glutMainLoop();

}

26、请使用 OpenGL 和 GLUT 编写一个显示线框球体的简单图形程序。其中球体的半径为 0.8,经线数为 24,纬线数为 12,并绕x轴旋转 30 度,程序窗口的大小为(200, 200),标题为“线框球”。

#include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glRotated(30, 1, 0, 0); glutWireSphere(0.8, 24, 12); glFlush(); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"线框球\"); glutDisplayFunc(Paint); glutMainLoop(); }

27、请使用 OpenGL 和 GLUT 编写一个显示线框椭球体的简单图形程序。其中椭球体的两极方向为上下方向,左右方向的半径为 0.98,上下方向的半径为 0.49,前后方向的半径为0.6,经线数为 48,纬线数为 24,使用正投影,裁剪窗口为(-1, -0.5)~(1, 0.5),程序窗口的大小为(400, 200),标题为“线框椭球”。 #include void Paint() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); gluOrtho2D(-1, 1, -0.5, 0.5); glScaled(0.98, 0.49, 0.6); glRotated(-90, 1, 0, 0); // 调整两极方向 glutWireSphere(1, 48, 24); glFlush(); }

int main() { glutInitWindowSize(400, 200); glutCreateWindow(\"线框椭球\"); glutDisplayFunc(Paint); glutMainLoop(); }

28、请使用 OpenGL、GLU 和 GLUT 编写一个三维犹他茶壶程序。其中茶壶的半径为 1 单位,并远移 6.5 单位;观察体规定为:视场角=30 度,宽高比=1,近=1,远=100;程序窗口 的大小为(200, 200),标题为“旋转的尤他茶壶”。茶壶绕 z 轴不断旋转,旋转的时间间隔为 25 毫秒,角度间隔为 2 度。注意旋转角度必须限定在 0~360 度以内。 #include int angle = 0; void Paint() {

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); gluPerspective(30, 1, 1, 100); glTranslatef(0, 0, -6.5); glRotated(angle, 0, 0, 1); glutSolidTeapot(1); glFlush(); }

void timer(int millis) { angle = (angle + 2) % 360; glutPostRedisplay(); glutTimerFunc(millis, timer, millis); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"旋转的尤他茶壶\"); glutTimerFunc(25, timer, 25); glutDisplayFunc(Paint); glutMainLoop(); }

29、请使用 OpenGL、GLU 和 GLUT 编写一个简单的多视口演示程序。要求:在屏幕窗口左下角的 1/4 部分显示一个红色的填充正三角形;在屏幕窗口右上角的 1/4 部分显示一个绿 色的填充正方形;三角形和正方形的左下角顶点坐标值均为(0, 0),右下角顶点坐标值均为(1,0);裁剪窗口均为(-0.1, -0.1)~(1.1, 1.1);程序窗口的大小为(200, 200),标题为“多视口演示”。 #include

void Viewport(int x, int y, int w, int h) { glViewport(x, y, w, h); glLoadIdentity(); gluOrtho2D(-0.1, 1.1, -0.1, 1.1); }

void Triangle() { glBegin(GL_TRIANGLES); glVertex2d(0, 0); glVertex2d(1, 0); glVertex2d(0.5, 0.8660); glEnd(); }

void Paint() { int w = glutGet(GLUT_WINDOW_WIDTH) / 2; int h = glutGet(GLUT_WINDOW_HEIGHT) / 2; glClear(GL_COLOR_BUFFER_BIT); Viewport(0, 0, w, h); glColor3f(1, 0, 0); Triangle(); Viewport(w, h, w, h); glColor3f(0, 1, 0); glRectd(0, 0, 1, 1); glFlush(); }

int main() { glutInitWindowSize(200, 200); glutCreateWindow(\"多视口演示\"); glutDisplayFunc(Paint); glutMainLoop(); }

30、请使用 OpenCV 编写一个简单的程序,用于从当前目录读入并显示一幅图像(例如当前目录中的 lena.jpg)。

#include // CV

#include // GUI int main() { IplImage *im = // 声明IplImage指针,载入彩色图像 cvLoadImage(\"lena.jpg\ if(im == 0) return -1; // 载入失败 cvNamedWindow(\"First OpenCV\ CV_WINDOW_AUTOSIZE); //创建窗口 cvShowImage(\"First OpenCV\显示图像 while(cvWaitKey(0) != 27) {} // 等待按Esc键 cvDestroyWindow(\"First OpenCV\"); // 销毁窗口 cvReleaseImage(&im); // 释放图像 }

31、请使用 OpenCV 编写一个简单的程序,该程序首先读入一幅彩色图像(例如当前目录中的 lena.jpg),然后将这幅彩色图像的 3 个通道分离出来,得到 3 幅灰度图像,最后显示 这 3 幅灰度图像并释放相关资源。

32、使用 OpenCV 编写一个演示傅立叶变换和逆变换的程序。该程序首先装入一幅灰度图像并显示该图像(例如当前目录中的 lena.jpg),然后对该图像进行傅立叶正变换,对得到 的结果进行傅立叶逆变换,显示得到的结果以便与原图像进行比对。 #include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ CvMat *Y = cvCreateMat(X->rows, X->cols, CV_F); cvScale(X, Y, (double)1 / 255, 0); cvDFT(Y, Y, CV_DXT_FORWARD, 0); cvDFT(Y, Y, CV_DXT_INVERSE_SCALE, 0); cvShowImage(\"src\ cvReleaseMat(&X), cvReleaseMat(&Y); cvDestroyAllWindows(); }

33、使用 OpenCV 编写一个程序,该程序对一幅彩色图像(例如当前目录中的 lena.jpg)进行一次中值模糊,要求分别显示源图像和模糊化以后的图像。其中内核大小为 5×5。 #include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvSmooth(X, X, CV_MEDIAN, 5, 5, 0, 0); cvShowImage(\"dst\ cvWaitKey(0); cvReleaseMat(&X);

cvDestroyAllWindows(); }

34、34、使用 OpenCV 编写一个程序,该程序对一幅灰度图像(例如当前目录中的 lena.jpg)进行Sobel 锐化,要求显示锐化以后的图像。其中内核大小为 3×3,x 和 y 方向均使用 1 阶差分。

#include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvShowImage(\"src\ CvMat *tmp = cvCreateMat(X->rows, X->cols, CV_16SC3); cvSobel(X, tmp, 1, 1, 3); cvConvert(tmp, X); cvShowImage(\"dst\ cvWaitKey(0); cvReleaseMat(&X), cvReleaseMat(&tmp); cvDestroyAllWindows(); }

35、使用 OpenCV 编写一个程序,该程序使用大小为 3 的正方形模板(锚点位于模板中心)对源图像(例如当前目录中的二值图像 image-j.bmp)进行 2 次腐蚀操作,要求显示源图像 和腐蚀以后的图像。 #include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvShowImage(\"src\ CvMat *tmp = cvCreateMat(X->rows, X->cols, CV_16SC3); cvSobel(X, tmp, 1, 1, 3); cvConvert(tmp, X); cvShowImage(\"dst\ cvWaitKey(0); cvReleaseMat(&X), cvReleaseMat(&tmp); cvDestroyAllWindows(); }

36、使用 OpenCV 编写一个程序,该程序对一幅灰度图像(例如当前目录中的 lena.jpg)进行直方图均衡化,要求分别显示源图像和均衡化以后的图像。 #include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvShowImage(\"Source image\ cvEqualizeHist(X, X); cvShowImage(\"Equalized Image\ cvWaitKey(0); cvReleaseMat(&X); cvDestroyAllWindows(); }

37、使用 OpenCV 编写一个程序,该程序对一幅灰度图像(例如当前目录中的 lena.jpg)进行二值化变换,要求分别显示源图像和二值化以后的图像。其中二值化阈值为 127,高亮度 改为 255。

#include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvShowImage(\"Source image\ cvThreshold(X, X, 127, 255, CV_THRESH_BINARY); cvShowImage(\"Binary Image\ cvWaitKey(0); cvReleaseMat(&X); cvDestroyAllWindows(); } 38 .使用 OpenCV 编写一个程序,该程序对一幅灰度图像(例如当前目录中的 lena.jpg)进 行 Canny 边缘检测,要求分别显示源图像和检测到的边缘。其中小阈值为 50,大阈值为 150,内核大小为 3。

#include

#include int main() { CvMat *X = cvLoadImageM(\"lena.jpg\ cvShowImage(\"Source image\ cvCanny(X, X, 50, 150, 3); cvShowImage(\"Canny Image\ cvWaitKey(0); cvReleaseMat(&X); cvDestroyAllWindows(); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务