opencv提取标识中心坐标c++
时间: 2023-06-30 17:10:38 浏览: 88
要提取标识中心坐标(centroid)的c++代码,可以使用OpenCV中的函数`findContours`来查找标识对象的轮廓,然后使用`moments`函数来计算轮廓的几何矩,最后使用这些几何矩计算出标识中心的坐标。
下面是一个简单的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat img = imread("image.jpg");
// 将图像转换为灰度图像
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 二值化图像
Mat thresh;
threshold(gray, thresh, 127, 255, THRESH_BINARY);
// 查找轮廓
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(thresh, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 计算轮廓的几何矩
Moments moments = moments(contours[0]);
// 计算标识中心的坐标
int cx = moments.m10 / moments.m00;
int cy = moments.m01 / moments.m00;
// 在图像上绘制标识中心
circle(img, Point(cx, cy), 5, Scalar(0, 0, 255), -1);
// 显示图像
imshow("image", img);
waitKey(0);
destroyAllWindows();
return 0;
}
```
请注意,此示例代码仅适用于图像中只有一个标识对象的情况。如果图像中有多个标识对象,则需要对每个对象进行相同的操作。
阅读全文