看板 C_and_CPP 關於我們 聯絡資訊
請問版上的大大, 1. 是否能夠使用OpenGL來顯示我的浮點數0~1的影像, 我目前只能先將資料*255用灰度去顯示, 不洗得要怎麼改成浮點數顯示, 請版上大大指點一下, 下面是我的程式 ( 已經可以顯示浮點數影像 ) 2. m 如果沒有規一化的影像是否能用呢,謝謝 3. 請問我是否能將這資料畫成3D的影像呢 就如同MATLAB中的mesh = = = = = = = = = = = = = = = = = = #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> #define Width 512 #define Height 512 float image[512][512]; // 讀記事本影像 void Image_read( float *input ) { char filename[] = "A512_2.txt"; FILE *fp1; fp1= fopen(filename, "r"); for( int i=0; i<Width*Height; i++) { fscanf( fp1,"%f",&input[i] ); } fclose(fp1); } // 顯示影像 void display( void ) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); glDrawPixels(512,512, GL_LUMINANCE, GL_FLOAT, image); glFlush(); } // ================= Main ================= // int main(int argc, char *argv[]) { int kk; float *input; input = (float*) fftw_malloc( sizeof(float)*Width*Height ); Image_read( input ); 把讀入的檔案都入顯示的變數中 for( int i=0; i<Width; i++) { for( int j=0; j<Height; j++) { image[i][j] = input[i*Width+j]; } } glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH ); glutInitWindowSize( Width, Height ); glutInitWindowPosition ( 100, 100); glutCreateWindow("Hello"); glClearColor(0.0, 0.0, 0.0, 1.0); glutDisplayFunc(display); glutMainLoop(); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.192.147
Bencrie:把GL_UNSIGNED_BYTE改成GL_FLOAT 05/04 13:48
aada:我改了會出錯呢 05/04 14:03
VictorTom:你的image有記得一起改成float array嗎?? 05/04 14:05
aada:可以了, 改為 float image[512][512]; 05/04 14:10
※ 編輯: aada 來自: 140.122.192.147 (05/04 14:11) ※ 編輯: aada 來自: 140.122.192.147 (05/04 14:14) ※ 編輯: aada 來自: 140.122.192.147 (05/04 14:14)
VictorTom:記得浮點資料就是clamp在0.0~1.0之間, 超過的GL也不知道 05/04 14:16
VictorTom:該如何幫你normalize/scale, 所以應該你要保證在0~1.@@" 05/04 14:17
aada:所以說超過1.0的話, 它會當作1嗎 05/04 14:17
VictorTom:另外, 即便資料是浮點數, 顯示在畫面上的pixel color一 05/04 14:18
VictorTom:樣只有可用bit count的階度, 也就是這case共256階而已. 05/04 14:18
aada:嗯嗯, 所以一般在顯示浮點數影像, OpenGL就會轉成8Bit的影像 05/04 14:20
aada:來顯示. 05/04 14:20
VictorTom:Hm~應該說是你給glDrawPixel()的參數讓GL幫你這麼做的. 05/04 14:22
aada:請問是否有函數可以做歸一化的嗎? 05/04 14:22
※ 編輯: aada 來自: 140.122.192.147 (05/04 14:40)
VictorTom:我不記得GL有提供normalize的function, 除了它可以替 05/04 16:22
VictorTom:vertex attribute的normal自動normalize, 但這和你的東 05/04 16:23
VictorTom:西無關, 你想讓glDrawPixel的input data normalize, 基 05/04 16:23
VictorTom:本上那不太關GL的事.... 05/04 16:24
VictorTom:另外, 要畫成3D影像畫成mesh, 你要自己轉換成vertex的 05/04 16:24
VictorTom:data讓GL去畫, 把一張平面浮點資料/灰階影像變成3D的 05/04 16:25
VictorTom:data, 基本上這也不太算GL的事, 建模要自己去建@_@" 05/04 16:26