案例背景:找到下图中的圆进行定位,并计算其面积和周长。
方案思路:先灰度化再二值化,再进行开操作去除杂点,寻找轮廓,通过轮廓特征找到圆部分。
#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(int arc, char** argv) {
Mat src = imread("1.jpg");
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
//灰度化
Mat gray;
cvtColor(src, gray, CV_BGR2GRAY);
//二值化
Mat binaryImg;
threshold(gray, binaryImg, 0, 255, THRESH_BINARY | THRESH_OTSU);
//开操作
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
morphologyEx(binaryImg, binaryImg, MORPH_OPEN, kernel);
//寻找轮廓
vector<vector<Point>>contours;
vector<Vec4i>hiera