如何从鼠标点击中获取像素的值?

时间:2013-02-09 11:09:49

标签: c++ opencv

我在屏幕上显示Mat矩阵作为图像。 我想点击此图片上的某个位置,我想在屏幕上获取该像素值。

如何使用OpenCV,C ++完成?

2 个答案:

答案 0 :(得分: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;
}

希望这有帮助。

答案 1 :(得分: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
}