九州工業大学 自律移動ロボット制作チーム「CIR-KIT(サーキット)」の活動ブログ(備忘録)
#include #include #include #include int main (int argc, char **argv) { int angle = 90; float m[6]; IplImage *frame = 0, *dst = 0; CvMat M; int key = 0; CvCapture* src; cvNamedWindow("CAMERA_SOURCE",CV_WINDOW_AUTOSIZE); cvNamedWindow("CAMERA_TRANS",CV_WINDOW_AUTOSIZE); src = cvCaptureFromCAM(0); if(src == NULL){ printf("映像が取得出来ません\n"); cvWaitKey(0); return -1; } //出力する映像のサイズを求めるために1フレームだけ先に求めておく frame = cvQueryFrame(src); //出力する映像の領域を確保 dst = cvCreateImage(cvSize(frame->height,frame->width),IPL_DEPTH_8U,3); while(1){ frame = cvQueryFrame(src); // 回転のための行列(アフィン行列)要素を設定し,CvMat行列Mを初期化する m[0] = (float) (cos (angle * CV_PI / 180)); m[1] = (float) (-sin (angle * CV_PI / 180)); m[2] = frame->width * 0.5; m[3] = -m[1]; m[4] = m[0]; m[5] = frame->height * 0.5; cvInitMatHeader (&M, 2, 3, CV_32FC1, m, CV_AUTOSTEP); // 指定された回転行列により,GetQuadrangleSubPixを用いて画像全体を回転させる cvGetQuadrangleSubPix (frame, dst, &M); // 結果を表示する cvShowImage ("CAMERA_SOURCE", frame); cvShowImage ("CAMERA_TRANS", dst); key=cvWaitKey (33); if(key == 27){ break; } } cvDestroyWindow ("CAMERA_SOURCE"); cvDestroyWindow ("CAMERA_TRANS"); cvReleaseImage (&frame); cvReleaseImage (&dst); return 0; }
0 件のコメント:
コメントを投稿