最終更新:
mikk_ni3_92 2007年11月16日(金) 14:53:46履歴
現在地 >> メニュー >> サンプルコード::OpenCV >> OpenCV::ラバーバンド
#include <cv.h>
#include <highgui.h>
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
void Mouse( int event, int x, int y, int flags ,void *param);
CvSize window={300,300};//ウィンドウサイズ
IplImage *imgA;
IplImage *tmp;
int main( int argc, char **argv)
{
imgA = cvCreateImage(window,IPL_DEPTH_8U,3);
cvSet (imgA, cvScalarAll (255), 0);
tmp = cvCloneImage(imgA);
cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",imgA);
cvSetMouseCallback("window", Mouse);
cvWaitKey(0); // 0秒待つ => ずっと入力待ち
cvReleaseImage( &imgA );
cvReleaseImage( &tmp );
cvDestroyWindow("window");
return 0;
}
/******* [ここから コールバック]********/
int Xstart,Ystart;
void Mouse( int event, int x, int y, int flags ,void *param = NULL) // コールバック関数
{
static bool MOUSE_FLAG=false;
switch(event)
{
case CV_EVENT_LBUTTONDOWN:
MOUSE_FLAG = true;
cvRectangle(imgA,cvPoint(x,y),cvPoint(x,y),cvScalar(255,0,0));
cvShowImage("window",imgA);
Xstart = x;
Ystart = y;
break;
case CV_EVENT_LBUTTONUP:
MOUSE_FLAG=false;
cvCopy(tmp,imgA);
break;
/**** 右ボタンでクリア ****/
case CV_EVENT_RBUTTONDOWN:
cvSet (imgA, cvScalarAll (255), 0);
cvShowImage("window",imgA);
break;
}
if(event == CV_EVENT_MOUSEMOVE && MOUSE_FLAG == true)
{
cvShowImage("window",imgA);
cvCopy(imgA,tmp);
cvLine(tmp,cvPoint(Xstart,Ystart),cvPoint(x,y),cvScalar(255,0,0));
cvShowImage("window",tmp);
}
}
#include <cv.h>
#include <highgui.h>
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
void Mouse( int event, int x, int y, int flags ,void *param);
CvSize window={300,300};//ウィンドウサイズ
IplImage *imgA;
IplImage *tmp;
int main( int argc, char **argv)
{
imgA = cvCreateImage(window,IPL_DEPTH_8U,3);
cvSet (imgA, cvScalarAll (255), 0);
tmp = cvCloneImage(imgA);
cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",imgA);
cvSetMouseCallback("window", Mouse);
cvWaitKey(0); // 0秒待つ => ずっと入力待ち
cvReleaseImage( &imgA );
cvReleaseImage( &tmp );
cvDestroyWindow("window");
return 0;
}
/******* [ここから コールバック]********/
int Xstart,Ystart;
void Mouse( int event, int x, int y, int flags ,void *param = NULL) // コールバック関数
{
static bool MOUSE_FLAG=false;
switch(event)
{
case CV_EVENT_LBUTTONDOWN:
MOUSE_FLAG = true;
cvRectangle(imgA,cvPoint(x,y),cvPoint(x,y),cvScalar(255,0,0));
cvShowImage("window",imgA);
Xstart = x;
Ystart = y;
break;
case CV_EVENT_LBUTTONUP:
MOUSE_FLAG=false;
cvCopy(tmp,imgA);
break;
/**** 右ボタンでクリア ****/
case CV_EVENT_RBUTTONDOWN:
cvSet (imgA, cvScalarAll (255), 0);
cvShowImage("window",imgA);
break;
}
if(event == CV_EVENT_MOUSEMOVE && MOUSE_FLAG == true)
{
cvShowImage("window",imgA);
cvCopy(imgA,tmp);
cvLine(tmp,cvPoint(Xstart,Ystart),cvPoint(x,y),cvScalar(255,0,0));
cvShowImage("window",tmp);
}
}