最終更新: mikk_ni3_92 2008年11月14日(金) 18:06:41履歴
現在地 >> メニュー >> 基本編22 >> 基本編22::まとめコード
以下の画像を読み込んで、表示せよ。
以下の画像を読み込んで、表示せよ。
#include <iostream> #include <GL/glut.h> #include <cv.h> #include <highgui.h> //----------- 各種外部変数 -----------------// const char *filename = "test2.jpg"; IplImage *imgA; //------------ プロトタイプ宣言 ---------------------// void display(); void reshape(int w, int h); //------------- OpenGLの初期設定 --------------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE); glutCreateWindow("Draw PixMap"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0, 1.0); glutReshapeWindow(imgA->width, imgA->height); //ウィンドウサイズを画像と合わせる } //------------- メイン関数 ------------------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); imgA = cvLoadImage( filename, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if(imgA ==NULL){ std::cout<< filename <<" : Can't Load Image .\n"; return -1; } MY_INIT(); glutMainLoop(); return 0; } //-------------- ここから各種コールバック -----------------// void display() { glClear(GL_COLOR_BUFFER_BIT); glDrawPixels(imgA->width,imgA->height,GL_BGR,GL_UNSIGNED_BYTE,imgA->imageData); glutSwapBuffers(); } void reshape(int w, int h) { glViewport(0, 0, w, h); glPixelZoom(static_cast<float>(w)/imgA->width, -static_cast<float>(h)/imgA->height); glRasterPos2i(-1, 1);//スクリーンのサイズが(2×2) }