現在地 >> メニュー >> 基本編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)
}

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます