opengl绘制opencv处理的数据点

原创 2013年12月03日 22:21:17

#include <iostream>  

#include <stdlib.h>  

#include <cv.h>  
#include <cxcore.h>  
#include <highgui.h>  
#include <math.h>  

#include <GL/glut.h>    

using namespace std; 


float imgdata[500][500]; 
int w=0; 
int h=0; 
//float scalar=50;//scalar of converting pixel color to float coordinates  
float scalar=30;

void renderScene(void) { 

 glClear (GL_COLOR_BUFFER_BIT); 
 glLoadIdentity();// Reset the coordinate system before modifying   
 gluLookAt (0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 
 //glRotatef(-30, 0.0, 1.0, 0.0); //rotate about the x axis  
 glRotatef(-180, 0.0, 0.0, 1.0); //rotate about the z axis  
 glRotatef(-180, 0.0, 1.0, 0.0); //rotate about the y axis  

 float imageCenterX=w*.5; 
 float imageCenterY=h*.5; 
 float x,y,z; 

 glPointSize(1.0);  
 glBegin(GL_POINTS);//GL_POINTS  
 for (int i=0;i<h;i++){  
  for (int j=0;j<w;j++){ 
   // color interpolation   
   glColor3f(1-imgdata[i][j]/255, imgdata[i][j]/255, imgdata[i][j]/255); 
   x=((float)j-imageCenterX)/scalar; 
   y=((float)i-imageCenterY)/scalar; 
   z=imgdata[i][j]/scalar;  
   glVertex3f(x,y,z);  
  } 
 } 
 glEnd(); 
 glFlush(); 

 

void reshape (int w, int h) { 
 glViewport (0, 0, (GLsizei)w, (GLsizei)h); 
 glMatrixMode (GL_PROJECTION); 
 glLoadIdentity (); 
 gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0); 
 glMatrixMode (GL_MODELVIEW); 


void displayDisparity(IplImage* disparity){ 

 double xyscale=100; 
 int j=0; 
 int i=0; 
 CvScalar s; 

 //accessing the image pixels  
 for (i=0;i<h;i++){  
  for (j=0;j<w;j++){ 
   s=cvGet2D(disparity,i,j); 
   imgdata[i][j]=s.val[0];//for disparity is a grey image.  
  } 
 }  


int main(int argc, char *argv[])  
{   
 cout << "OpenCV and OpenGL working together!"<<endl;  
 char* filename="1.jpg"; 
 IplImage* imgGrey = cvLoadImage(filename,0); //read image as a grey one   
 if (imgGrey==NULL){ 
  cout << "No valid image input."<<endl;  
  char c=getchar(); 
  return 1; 
 }  
 w=imgGrey->width; 
 h=imgGrey->height; 

 displayDisparity(imgGrey);  
 cvNamedWindow("original", CV_WINDOW_AUTOSIZE ); 
 cvShowImage( "original", imgGrey ); 

 //------------------OpenGL-------------------------  
 glutInit(&argc, argv); 
 glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); 
 glutInitWindowPosition(100,100); 
 glutInitWindowSize(500,500); 
 glutCreateWindow("3D disparity image"); 
 glutDisplayFunc(renderScene); 

 glutReshapeFunc (reshape); 
 glutMainLoop(); 


 cvWaitKey(0);  
 //release opencv stuff.  
 cvReleaseImage(&imgGrey); 
 cvDestroyWindow("Original"); 

 return 0;  

OpenGL(十七) 绘制折线图、柱状图、饼图

一、绘制折线图 glutBitmapCharacter(GLUT_BITMAP_8_BY_13,label[j])函数可以绘制GLUT位图字符,第一个参数是GLUT中指定的特定字形集,第二个参数是要...
  • dcrmg
  • dcrmg
  • 2016年11月22日 21:49
  • 1824

openGL绘制正方体分别实现简单颜色绘制、纹理绘制、光照绘制

使用openGL绘制正方体; 面1:使用简单颜色绘制,颜色为绿色; 面2:使用简单颜色绘制,颜色为渐变色; 面3:绘制一维纹理; 面4:绘制二维纹理; 面5:光照绘制,黄色; 面6:光照绘制,橘色; ...
  • i_chaoren
  • i_chaoren
  • 2016年12月17日 13:26
  • 1359

OpenGL数据点折线与直方图

效果图: #include GLsizei winwidth=1200,winheight=600; //初始化显示屏尺寸 GLint xraster=25,yraster=150; //初始化光栅...
  • qq_28597703
  • qq_28597703
  • 2015年08月04日 16:23
  • 276

OpenGL(一)绘制圆、五角星、正弦曲线

OpenGL入门之“顶点” OpenGL规定,一个多边形必须是一个“凸多边形”,即连接多边形上任意两点,其连线都在多边形内部。多边形可以由其边上的端点(这里可称为顶点)来确定。所以“顶点”的概念在图形...
  • dcrmg
  • dcrmg
  • 2016年11月06日 23:11
  • 3819

OpenGL学习二十四:绘制像素,位图,图像

除了几何图形的渲染,还有两种重要的类型的数据渲染 位图:由0和1组成的矩形数组(采用黑白,0为黑1,为白) 图像数据:每个像素包含好几段数据(RGBA) 当前光栅位置 当前光栅位置就是开始绘制下一副...
  • tiankefeng19850520
  • tiankefeng19850520
  • 2014年01月21日 22:24
  • 1947

[OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)

本文译自:[OPENCV QT TUTORIAL] OPENGL WIDGET TO SHOW OPENCV IMAGES IN A QT GUI (FIRST PART) 此教程是关于在Qt图形界面...
  • howlclat
  • howlclat
  • 2017年02月21日 14:10
  • 836

OpenGL使用顶点数组进行图形的绘制

#include #include static GLfloat spin = 0.0; #define PI 3.1415926 GLint circle_points = 100; stati...
  • sgnyyy
  • sgnyyy
  • 2016年09月13日 16:47
  • 742

OpenGL与OpenCV实现增强现实

很久没有写博客了,最近在学习计算机视觉的相关知识,于是写了一个AR的小Demo。 该程序通过OpenCV实现对Marker的识别和定位,然后通过OpenGL将虚拟物体叠加到摄像头图像下,实现增强...
  • yanglusheng
  • yanglusheng
  • 2016年08月21日 17:12
  • 3913

OpenGL绘制图形以及绘制动画(一)

刚开始接触OpenGL,有点小激动,终于绘制出一个图形了,哇 通过代码加注释理解程序,简单粗暴。 #include #include #include #include //头文件/表示在gl目录...
  • qq_33850438
  • qq_33850438
  • 2016年07月02日 19:40
  • 3188

OpenGL三维球体体数据生成与绘制

#include #include #include #include #include #include #include #include #include #include usin...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年04月17日 13:01
  • 1675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:opengl绘制opencv处理的数据点
举报原因:
原因补充:

(最多只允许输入30个字)