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 回答