OpenGL de プログラミング - OpenCV::アニメーション
現在地 >> メニュー >> サンプルコード::OpenCV >> OpenCV::アニメーション


OpenCV::アニメーション2


問題


ウィンドウを作り、青い点が「ウィンドウの中心」を中心にしてぐるぐる回るアニメーションを実現せよ。
その他条件:
 ESCキーで終了できる。

答え



#include <cv.h>
#include <highgui.h>
#include <cstdio>
#include <cmath>
#include <iostream>

using namespace std;

inline void CV_MAIN_LOOP();


CvSize window={300,300};//ウィンドウサイズ

IplImage *imgA;
int main( int argc, char **argv)
{

imgA = cvCreateImage(window,IPL_DEPTH_8U,3);
cvSet (imgA, cvScalarAll (255), 0);

cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",imgA);


CV_MAIN_LOOP();



cvReleaseImage( &imgA );
cvDestroyWindow("window");

return 0;
}


/********** ここからメインループ ********************/
inline void CV_MAIN_LOOP()
{

#define PI_OVER_180 0.0174532925

int frame=0;
char key;
int x,y;

while(1)
{
cvSet (imgA, cvScalarAll (255), 0);
x = window.width/2 + int(50*cos(frame*PI_OVER_180));
y = window.height/2 + int(50 *sin(frame*PI_OVER_180));
cvCircle(imgA,cvPoint(x,y),3,cvScalar(255,0,0),CV_FILLED);
cvShowImage("window",imgA);


key=(char)cvWaitKey(1);
if(key=='\033') break;

frame+=1;
if(frame>360) frame = 0;
}

}

メモ


1ミリ秒キー入力を待つことで、キーによる終了処理をチェック