トップページ > コンテンツ > その他のAPI、ライブラリ関係 > Opencv関連 > マウス処理

例えば、マウスクリックしたときの座標と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