资源简介

利用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 < Image_2D.cols; i++)
 {
// gl_x = float (i/Image_2D.cols);
 for (float j = 0; j < Image_2D.rows; j++)
 {
// gl_y = float (j/Image_2D.rows);
// gl_z = float (Image_2D.at(ji)/256.0f);
 //if gl_x
// cout << gl_x << endl;
// cout << gl_y << endl;
 //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\link-cvtres.read.1.tlog
     文件           2  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link-cvtres.write.1.tlog
     文件           2  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.23888-cvtres.read.1.tlog
     文件           2  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.23888-cvtres.write.1.tlog
     文件           2  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.23888.read.1.tlog
     文件           2  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.23888.write.1.tlog
     文件        2592  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.command.1.tlog
     文件        6216  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.read.1.tlog
     文件         978  2016-04-20 18:22  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\link.write.1.tlog
     文件         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.embed.manifest
     文件         472  2016-04-20 18:19  OpenGL_2Dto3D\OpenGL_2Dto3D\Debug\OpenGL_2Dto3D.exe.embed.manifest.res
............此处省略47个文件信息

评论

共有 条评论