下面是一个示例代码,可以在OpenCV中显示一张图片,并且在鼠标点击时记录两个点的坐标,并计算它们的中点:
```c++
#include
using namespace cv;
Point pt1, pt2;
void onMouse(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN) {
if (pt1.x == -1) {
pt1 = Point(x, y);
std::cout << "Point 1: (" << x << ", " << y << ")" << std::endl;
}
else if (pt2.x == -1) {
pt2 = Point(x, y);
std::cout << "Point 2: (" << x << ", " << y << ")" << std::endl;
Point mid = (pt1 + pt2) / 2;
std::cout << "Midpoint: (" << mid.x << ", " << mid.y << ")" << std::endl;
}
}
}
int main()
{
Mat img = imread("test.jpg");
namedWindow("Image");
setMouseCallback("Image", onMouse, NULL);
imshow("Image", img);
waitKey(0);
return 0;
}
```
在这个示例中,我们首先定义了两个全局变量pt1和pt2,用于存储用户单击鼠标左键时的两个点的坐标。当用户单击鼠标左键时,onMouse函数会被调用,并根据pt1和pt2的值来记录当前点的坐标。如果pt1还没有被赋值,那么当前点的坐标就被记录为pt1;否则,当前点的坐标就被记录为pt2,并且计算pt1和pt2的中点,并输出中点的坐标。
你可以根据自己的需要修改这个示例代码,例如更改图片路径、修改输出格式等等。