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

  • 本文关键字:获取 像素 鼠标 c++ opencv
  • 更新时间 :
  • 英文 :


我在屏幕上以图像的形式显示Mat矩阵。我想点击这个图像上的一个位置,我想在屏幕上获得那个像素值。

如何使用OpenCV、C++?

下面的代码用于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;
}

希望这能有所帮助。

对于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
}

相关内容

  • 没有找到相关文章

最新更新