opengl绘制opencv处理的数据点

#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;  

阅读更多
文章标签: opencv opengl 毕设
个人分类: 毕设
想对作者说点什么? 我来说一句

OpenGL据点折线与直方图

2015年08月04日 5.75MB 下载

OPenGL绘制三维曲面的例子

2009年04月21日 12KB 下载

没有更多推荐了,返回首页

不良信息举报

opengl绘制opencv处理的数据点

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭