例えば、マウスクリックしたときの座標とBGR表記をするようにすると
以下のようになる。cvSetMouseCallbackでコールバック関数を指定する。
今回はパラメーターとしてIplImage*型の変数imageをいれたが、
特に必要がなければ、cvSetMouseCallback("TEST",Mouse)でもOK。
#include <iostream>
#include <cv.h>
#include <highgui.h>
using namespace std;
void Mouse( int event, int x, int y, int flags ,void *param);
int main() {
IplImage* image =
cvLoadImage("./test.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(image == NULL) {
return -1;
}
cvNamedWindow("TEST",CV_WINDOW_AUTOSIZE);
cvShowImage("TEST",image);
cvSetMouseCallback("TEST", Mouse, image);
cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("TEST");
return 0;
}
void Mouse( int event, int x, int y, int flags ,void *param){
IplImage* img = (IplImage*) param;
CvScalar color;
switch(event) {
case CV_EVENT_LBUTTONDOWN:
color = cvGet2D(img,x,y);
cout << "(" <<x << "," << y << "):"
<< "[B]" << color.val[0]
<< "[G]" << color.val[1]
<< "[R]" << color.val[2]
<< endl;
break;
default:
break;
}
}
最終更新:2011年04月03日 18:52