0

画面に Mat マトリックスを画像として表示します。この画像の場所をクリックして、画面上のそのピクセル値を取得したい。

OpenCV、C++でどのように行うことができますか?

4

2 に答える 2

2

以下のコードを に使用しますIplImageが、 を使用しても結果は同じになるはずですMat

void my_mouse_callback(int event, int x, int y, int flags, void* param){
  IplImage* image = (IplImage*) param;

  switch(event) {
    case CV_EVENT_LBUTTONDOWN:
      std::cout << "x: " << x << std::endl;
      std::cout << "y: " << y << std::endl;
      break;
    default:
      break;
  }
}

int main() {
  IplImage* image = cvLoadImage("picture_file_name_here");

  cvNamedWindow("Test");

  cvSetMouseCallback("Test", my_mouse_callback, (void*) image);

  cvShowImage("Test", image);
  cvWaitKey(0);

  cvReleaseImage(&image);

  return 0;
}

お役に立てれば。

于 2013-02-09T11:55:13.940 に答える
0

cv::Mat の場合は次のようになります。

cv::Mat mat; // load img, etc

cv::setMouseCallback("Test", my_mouse_callback, (void*) &mat);

// ...



void my_mouse_callback(int event, int x, int y, int flags, void* param){
  cv::Mat mat = *((cv::Mat*)param);  // so, 1st cast, then deref
}
于 2013-02-09T12:12:08.620 に答える