opencv3 圆检测

代码如下:

#include<opencv.hpp>  
#include<iostream>

using namespace cv;
using namespace std;
int main()
{

	int b = 0, g = 0, r = 255;

	cv::Mat image = cv::imread("F:\\ebook\\opencv\\LearningOpenCV3\\test\\test\\test.png");
	
	cv::namedWindow("window1");
	cv::imshow("window1", image);
	cv::waitKey(0);

	cv::Mat gray;
	cv::cvtColor(image, gray, COLOR_BGR2GRAY);

	cv::namedWindow("window1");
	cv::imshow("window1", gray);
	cv::waitKey(0);

	vector<Vec3f> result;

	//cv::HoughLinesP(cannyimage, result, 1, CV_PI / 180, 150, 10, 10);

	cv::HoughCircles(gray, result, cv::HOUGH_GRADIENT, 1, 40, 150, 40, 10, 200);

	//将圆画出
	int linenum = result.size();

	cv::Mat disimage;
	cvtColor(gray, disimage, COLOR_GRAY2RGB);
	for (int i = 0; i < linenum; i++)
	{
		int circlex = result[i][0];
		int circley = result[i][1];
		int circler = result[i][2];

		circle(disimage,Point(circlex,circley),circler,Scalar(b,g,r),3,8,0);		
	}

	
	cv::namedWindow("window2");
	cv::imshow("window2", disimage);
	cv::waitKey(0);

	cv::destroyWindow("window1");
	cv::destroyWindow("window2");
	return 0;
}

检测结果如图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34662299/article/details/86318948