Skip to content

Pixel over access with mouse callback function #20141

@ynatori

Description

@ynatori
System information (version)
  • OpenCV => 4.5.2
  • Operating System / Platform => Ubuntu 20.04.2 / x86_64
  • Compiler => g++ 9.3
Detailed description

I have found that by using OpenCV's mouse callback function in high GUI module with GTK backend I can access pixels who's coordinate is out of range of image.
For example I can access pixel 500 or 333 despite image size is 500x333 and accessible area should be 0-499 for width and 0-332 for height.
When reproducing it with QT backend, this issue did not happen(can not access 500 or 333 in above example).

Steps to reproduce
  1. reading an image and click border of an image with mouse
  2. get and output clicked pixel coordinates using mouse callback function

Please change input image path in below code

test.cpp
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>

void onMouse(int action, int x, int y, int flags, void *userdata)
{
    // Action to be taken when left mouse button is clicked
    if( action == cv::EVENT_LBUTTONDOWN )
    {
        std::cout << "Clicked position: " << cv::Point(x,y) << std::endl;
    }
}

int main(){
    cv::Mat input = cv::imread("../test.png");
    std::cout << "Image size: " << input.size() << std::endl;

    cv::namedWindow("test");
    cv::setMouseCallback("test", onMouse); // set callback function
    cv::imshow("test", input);
    while(cv::waitKey() != 27){}

    cv::destroyAllWindows();
    return 0;
}

And this is my tested output with this code.
I emphasized issues with bold and italic.

Image size: [500 x 333]
Clicked position: [500, 198]
Clicked position: [0, 99]
Clicked position: [321, 0]
Clicked position: [367, 333]

Issue submission checklist
  • I report the issue, it's not a question
  • I checked the problem with documentation, FAQ, open issues,
    forum.opencv.org, Stack Overflow, etc and have not found solution
  • I updated to latest OpenCV version and the issue is still there
  • There is reproducer code and related data files: videos, images, onnx, etc

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions