opencv使用c++输出图形中心坐标
时间: 2024-01-01 20:03:57 浏览: 30
要输出图形中心坐标,你需要先使用OpenCV读取图像,然后找到图形的中心位置。以下是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat image = imread("example.jpg");
// 转换为灰度图像
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
// 二值化图像
Mat binary;
threshold(gray, binary, 100, 255, THRESH_BINARY);
// 查找轮廓
vector<vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 计算中心坐标
Moments moment = moments(contours[0]);
Point center(moment.m10 / moment.m00, moment.m01 / moment.m00);
cout << "Center: (" << center.x << ", " << center.y << ")" << endl;
// 在图像上绘制中心点
circle(image, center, 5, Scalar(0, 0, 255), -1);
// 显示图像
imshow("Image", image);
waitKey(0);
return 0;
}
```
这个示例代码中,我们首先读取了一张图像,然后将其转换为灰度图像,并进行二值化处理。接着,我们使用 `findContours` 函数查找图像中的轮廓。由于我们只有一个轮廓,所以直接使用 `contours[0]` 访问它。然后,我们使用 `moments` 函数计算轮廓的矩,从而得到中心坐标。最后,在图像上绘制中心点,将其显示出来。
注意,这个示例代码只能处理单个轮廓的情况。如果你的图像中有多个轮廓,你需要修改代码来处理这种情况。
阅读全文