用C++和openCV实现:在输出的图片上取两个点,返回两个点的xy值,接着计算这两个点的中点

动态 未结 0 125
小小草
小小草 LV1 2023年9月23日 23:40 发表
下面是一个示例代码,可以在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的中点,并输出中点的坐标。 你可以根据自己的需要修改这个示例代码,例如更改图片路径、修改输出格式等等。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复