//---------------------------------------------------------
// 概要      : 画像の拡大、縮小を行う
// File Name : scale.cpp
// Library   : OpenCV for MS-Windows 1.0
//---------------------------------------------------------

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

#define SCALE_X 1.5		//	X方向の拡大率
#define SCALE_Y 0.8		//	Y方向の拡大率

int main( int argc, char **argv ) {
	char windowNameSource[] = "Source";				//	元画像を表示するウィンドウの名前
	char windowNameDestination[] = "Destination";	//	変換後の画像を表示するウィンドウの名前

	//	画像を読み込む
	IplImage *sourceImage = cvLoadImage( "image/lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR );

	if ( sourceImage == NULL ){
		//	画像が見つからなかった場合
		printf( "画像が見つかりません\n" );
		return -1;
	}	

	//	画像を生成する
	IplImage *destinationImage = cvCreateImage( cvSize( ( int )( sourceImage->width * SCALE_X ), ( int )( sourceImage->height * SCALE_Y ) ), IPL_DEPTH_8U, 3 );	//	変換後の画像用IplImage

	//	画像の大きさを変換する
	cvResize( sourceImage, destinationImage, CV_INTER_LINEAR );

	//	ウィンドウを生成する
	cvNamedWindow( windowNameSource, CV_WINDOW_AUTOSIZE );
	cvNamedWindow( windowNameDestination, CV_WINDOW_AUTOSIZE );

	//	画像を表示する
	cvShowImage( windowNameSource, sourceImage );
	cvShowImage( windowNameDestination, destinationImage );

	//	キー入力を待つ
	cvWaitKey( 0 );

	//	画像を保存する
	cvSaveImage( "image/destination.bmp", destinationImage );

	//	メモリを解放する
	cvReleaseImage( &sourceImage );
	cvReleaseImage( &destinationImage );
	//	ウィンドウを破棄する
	cvDestroyWindow( windowNameSource );
	cvDestroyWindow( windowNameDestination );

  return 0;
}

