用opencv打开一张图片,并可以显示鼠标点到的点坐标
时间: 2024-03-10 07:47:09 浏览: 90
下面是使用 OpenCV 打开一张图片,并在图片上显示鼠标点击位置坐标的示例代码:
```c++
#include <opencv2/opencv.hpp>
void onMouse(int event, int x, int y, int flags, void* userdata);
int main()
{
cv::Mat image = cv::imread("image.jpg");
cv::namedWindow("Image", CV_WINDOW_NORMAL);
cv::setMouseCallback("Image", onMouse, &image);
cv::imshow("Image", image);
cv::waitKey(0);
}
void onMouse(int event, int x, int y, int flags, void* userdata)
{
cv::Mat* image = static_cast<cv::Mat*>(userdata);
if (event == cv::EVENT_LBUTTONDOWN)
{
std::cout << "Point: (" << x << ", " << y << ")" << std::endl;
cv::circle(*image, cv::Point(x, y), 5, cv::Scalar(0, 0, 255), cv::FILLED);
cv::imshow("Image", *image);
}
}
```
在这里,我们首先使用 cv::imread() 函数读取一张图片,然后创建一个窗口,并使用 cv::setMouseCallback() 函数注册鼠标回调函数。在回调函数 onMouse() 中,当鼠标左键按下时,我们在控制台输出鼠标点击位置的坐标,并在图片上绘制一个红色圆圈表示该位置。
需要注意的是,cv::setMouseCallback() 函数的最后一个参数是传递给回调函数的用户数据指针,我们将图片的指针传递给它,以便在回调函数中可以修改图片并在窗口中显示出来。
希望这个示例代码对你有所帮助。
阅读全文