fig.1
以下がインクルードファイルです。
#include "stdio.h"
#include "highgui.h"
#include "cvaux.h"
以下がbutton event 内のソースになります。
//カメラキャプチャ用の構造体
CvCapture *capture;
//キャプチャ画像用のIplImage
IplImage *Image;
//カメラを初期化をする
if((capture = cvCreateCameraCapture(-1)) == NULL){
//カメラが見つからなかった場合
this->label1->ForeColor = System::Drawing::Color::Red;
this->label1->Text = "Not Find Camera";
return;
}else{
this->label1->Text = "Find Camera";
}
//カメラからの入力画像1フレームをframeImageに格納する
Image = cvQueryFrame(capture);
//画像を生成する
IplImage *frameImage = cvCreateImage(cvGetSize(Image), IPL_DEPTH_8U, 3);
//画像の中心を求める
CvPoint2D32f center = cvPoint2D32f(Image->width/2.0, Image->height/2.0);
//行列を生成する
CvMat *rotationMatrix = cvCreateMat(2,3,CV_32FC1);
//変換行列を求める
cv2DRotationMatrix(center, ANGLE, SCALE, rotationMatrix);
//画像の回転を行う
cvWarpAffine(Image, frameImage, rotationMatrix, CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS, cvScalarAll(0));
//BMPCalssを用意
Bitmap^ bmp = gcnew Bitmap( frameImage->width, frameImage->height, Imaging::PixelFormat::Format24bppRgb);
//IplImageをBitmapに変換
Imaging::BitmapData^ bmpData;
bmpData = bmp->LockBits(System::Drawing::Rectangle(0, 0, bmp->Width, bmp->Height), Imaging::ImageLockMode::ReadWrite, bmp->PixelFormat );
memcpy( bmpData->Scan0.ToPointer(), frameImage->imageData, frameImage->imageSize );
bmp->UnlockBits(bmpData);
// ピクチャボックスに表示
pictureBox1->Image = bmp;
//キャプチャを開放する
cvReleaseCapture(&capture);
以上。