无法跟踪鼠标事件 OpenCV

Cannot track mouse events OpenCV

本文关键字:事件 OpenCV 鼠标 跟踪      更新时间:2023-10-16

我无法使用OpenCV的Highgui库跟踪鼠标事件。我想打印图像上单击点的位置,但 onMouse(( 函数跟踪实际图像后面显示的灰色图像的单击。

这是我的代码:

using namespace std;
using namespace cv;
// called when mouse is clicked
void onMouse(int event, int x, int y, int f, void* userdata) {
    // If the left button is pressed
    if (event == cv::EVENT_LBUTTONDOWN){
        cout << "Position: "<< x <<", "<<y<< endl;
        return;
    }
}
int main(int argc, char** argv){
    // read image into cv::Mat input_img and visualize
    Mat image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
    if (!image.data)                              // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }
    String win_name= "window";
    namedWindow(win_name, WINDOW_AUTOSIZE);// Create a window for display.
    imshow(win_name, image);
    setMouseCallback(win_name, onMouse, (void*)&image);
    cout << "setMouseCallBack CALLED" << endl;
    waitKey(0);
    destroyAllWindows();
    return 0;
}

你说"出现"是什么意思,你只有一个窗口,顺便说一下,尝试像这样调用函数

setMouseCallback(win_name, onMouse, 0);

我想也许通过传递指针,它只需要指向数据的指针,而无法读取有关图像颜色的信息。