資源簡介
利用OpenCV讀取本地jpg圖像,利用OpenGL實現了將2維的jpg圖像顯示成三維圖像,可以利用鼠標進行平移,旋轉,縮放等控制。環境VS2010和OpenGL和OpenCV,需要用戶自己配置OpenGL(很簡單的)。不錯的源代碼。配置好環境可以直接運行(里面包含了例子圖像和exe文件)
代碼片段和文件信息
//?OpenGL_2Dto3D.cpp?:?Defines?the?entry?point?for?the?console?application.
#include?“stdafx.h“
#include?“OpenGL_2Dto3D.h“
/*?Simple?window?transformation?routine?*/
GLvoid?Transform(GLfloat?Width?GLfloat?Height)
{
??glViewport(0?0?Width?Height);??????????????/*?Set?the?viewport?*/
??glMatrixMode(GL_PROJECTION);??????????????????/*?Select?the?projection?matrix?*/
??glLoadIdentity(); /*?Reset?The?Projection?Matrix?*/
??gluPerspective(45.0Width/Height0.1100.0);??/*?Calculate?The?Aspect?Ratio?Of?The?Window?*/
??glMatrixMode(GL_MODELVIEW);???????????????????/*?Switch?back?to?the?modelview?matrix?*/
}
/*?A?general?OpenGL?initialization?function.??Sets?all?of?the?initial?parameters.?*/
GLvoid?InitGL(GLfloat?Width?GLfloat?Height)
{
??glClearColor(0.0?0.0?0.0?0.0); /*?This?Will?Clear?The?Background?Color?To?Black?*/
??glShadeModel(GL_SMOOTH);
??Transform(?Width?Height?);???????????????????/*?Perform?the?transformation?*/
}
/*?The?function?called?when?our?window?is?resized??*/
GLvoid?ReSizeGLScene(GLint?Width?GLint?Height)
{
??if?(Height==0)????Height=1;???????????????????/*?Sanity?checks?*/
??if?(Width==0)?????Width=1;
??Transform(?Width?Height?);???????????????????/*?Perform?the?transformation?*/
}
/*?The?main?drawing?function
???In?here?we?put?all?the?OpenGL?and?calls?to?routines?which?manipulate
???the?OpenGL?state?and?environment.
???This?is?the?function?which?will?be?called?when?a?“redisplay“?is?requested.
*/
GLvoid?DrawGLScene()
{
??glClear(GL_COLOR_BUFFER_BIT?|?GL_DEPTH_BUFFER_BIT); /*?Clear?The?Screen?And?The?Depth?Buffer?*/
??glPushMatrix();?//把矩陣壓入棧中保存起來,留著以后再用
??glLoadIdentity();?//把矩陣堆棧中的在棧頂的那個矩陣置為單位矩陣,好讓之前的任何變換都不影響后面的變化
?//?glTranslatef(0.00.00.0);?//下面物體將在(x0.0f0.0f)的位置繪制
?//?glRotatef(xr1.00.00.0);?//沿x0.0f0.0f的y軸旋轉45度????從?坐標(0,0,0)即原點,引出一條線到(100)用右手握住這條線,
//這時,你會問,如何握?右手大拇指指向?(0,0,0)至(1,0,0)的方向?才握。另外四個手指的彎曲指向?即是物體旋轉方向。
??glTranslatef(cameraPositionX?cameraPositionY?cameraDistance);
??glRotatef(cameraAngleX?1?0?0);
??glRotatef(cameraAngleY?0?1?0);
??glScalef(xsyszs);??????//xsyszs分別為模型在xyz軸方向的縮放比。???
??//glBegin(GL_POLYGON);??????????
?glBegin(GL_POINTS);?
?
?/****************************************/
?for?(float?i?=?0;?i??{
//?gl_x?=?float?(i/Image_2D.cols);
?for?(float?j?=?0;?j? ?{
//?gl_y?=?float?(j/Image_2D.rows);
//?gl_z?=?float?(Image_2D.at(ji)/256.0f);
?//if?gl_x
//?cout?< //?cout?< ?//glVertex3f(?gl_x?gl_y?gl_z);?
?glColor3f(1.0Image_2D.at(ji)/256.0f0.0);
?glVertex3f(?(i?-?Image_2D.cols/2)*0.1?(j?-?Image_2D.rows/2)*0.1?Image_2D.at(ji)*0.1);
?}
?}
?/******************************************/
?????/*********************
????glVertex3f(?1.0?2.0?1.0);???????
????glColor3f(1.00.00.0);?????
????glVertex3f(-1.0?1.0?1.0);????????
????glColor3f(1.01.00.0);?????
????glVer
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-05-20?19:31??OpenGL_2Dto3D\
?????目錄???????????0??2016-05-20?19:29??OpenGL_2Dto3D\Debug\
?????文件???????60416??2016-04-20?18:22??OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.exe
?????文件??????527572??2016-04-20?18:22??OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.ilk
?????文件?????1616896??2016-04-20?18:22??OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.pdb
?????目錄???????????0??2016-04-28?20:25??OpenGL_2Dto3D\ipch\
?????目錄???????????0??2016-05-20?19:29??OpenGL_2Dto3D\ipch\opengl_2dto3d-9dae658b\
?????文件?????2359296??2016-04-28?20:25??OpenGL_2Dto3D\ipch\opengl_2dto3d-9dae658b\opengl_2dto3d-ea21d83a.ipch
?????目錄???????????0??2016-05-20?19:30??OpenGL_2Dto3D\OpenGL_2Dto3D\
?????文件????40390656??2016-04-28?22:24??OpenGL_2Dto3D\OpenGL_2Dto3D.sdf
?????文件?????????906??2016-04-20?17:49??OpenGL_2Dto3D\OpenGL_2Dto3D.sln
?????文件???????13312??2016-04-28?22:24??OpenGL_2Dto3D\OpenGL_2Dto3D.suo
?????文件???????35476??2015-12-07?11:21??OpenGL_2Dto3D\OpenGL_2Dto3D\2.jpg
?????目錄???????????0??2016-05-20?19:30??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\
?????文件????????2010??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\cl.command.1.tlog
?????文件???????15918??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\CL.read.1.tlog
?????文件?????????916??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\CL.write.1.tlog
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件???????????2??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件????????2592??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件????????6216??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件?????????978??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\li
?????文件?????????430??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\mt.command.1.tlog
?????文件?????????362??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\mt.read.1.tlog
?????文件?????????362??2016-04-20?18:22??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\mt.write.1.tlog
?????文件?????????406??2016-04-20?18:19??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.exe.em
?????文件?????????472??2016-04-20?18:19??OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.exe.em
............此處省略47個文件信息
評論
共有 條評論