c++如何调用opencv库,使用鼠标在屏幕上取点,并将点位画在图片上
时间: 2024-02-28 20:54:39 浏览: 35
要调用 OpenCV 库,你需要在 C++ 代码中包含相应的头文件和库文件。具体步骤如下:
1. 在代码中包含 OpenCV 的头文件,例如:
```c++
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
```
2. 链接 OpenCV 的库文件,例如:
```c++
g++ -o output main.cpp `pkg-config --libs opencv`
```
其中 `main.cpp` 是你的代码文件名,`output` 是你的可执行文件名。
3. 使用鼠标在屏幕上取点,可以使用 OpenCV 中的 `setMouseCallback` 函数,例如:
```c++
void onMouse(int event, int x, int y, int flags, void* userdata)
{
if (event == cv::EVENT_LBUTTONDOWN)
{
std::cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ")" << std::endl;
}
}
int main()
{
cv::Mat image = cv::imread("image.jpg");
cv::namedWindow("Image");
cv::setMouseCallback("Image", onMouse, NULL);
cv::imshow("Image", image);
cv::waitKey(0);
return 0;
}
```
这段代码创建了一个名为 "Image" 的窗口,并在窗口中显示了一张名为 "image.jpg" 的图片。当用户在窗口中单击鼠标左键时,会调用 `onMouse` 函数,并输出鼠标点击的位置。
4. 将点位画在图片上,可以使用 OpenCV 中的 `circle` 函数,例如:
```c++
void onMouse(int event, int x, int y, int flags, void* userdata)
{
if (event == cv::EVENT_LBUTTONDOWN)
{
cv::Mat* image = static_cast<cv::Mat*>(userdata);
cv::circle(*image, cv::Point(x, y), 5, cv::Scalar(0, 0, 255), -1);
cv::imshow("Image", *image);
}
}
int main()
{
cv::Mat image = cv::imread("image.jpg");
cv::namedWindow("Image");
cv::setMouseCallback("Image", onMouse, &image);
cv::imshow("Image", image);
cv::waitKey(0);
return 0;
}
```
这段代码在 `onMouse` 函数中调用了 `circle` 函数,将鼠标点击的位置画了一个半径为 5 的红色圆圈,并在窗口中更新了图片。注意,我们将图片的指针传递给了 `setMouseCallback` 函数的 `userdata` 参数,以便在 `onMouse` 函数中使用。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)