C++求解圆心、半径、直线与圆交点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近测试了一个检测项目,需要检测出手机后置摄像头孔洞圆环周边是否全部点胶,并计算点胶完成的百分比。


一、检测对象

点胶区域识别由前序深度学习软件识别,并在示意图中画出深度学习识别的点胶部分,如下图红色连通域。
在这里插入图片描述

二、检测方法

1.检测圆心和半径

主要方法是调用霍夫圆检测函数,并根据机械定位和先验信息约束正解。

	Mat src = imread("..\\data\\0.jpg", 1);//输入图
	Mat srcdisplay = Mat::zeros(src.rows, src.cols, CV_8UC1);
	vector<Mat> channels;
	split(src, channels);
	Mat heightMapRed = channels.at(2);
	//1检测圆心半径
	Mat srcgray;
	cvtColor(src, srcgray, COLOR_RGB2GRAY);
	double circle_R = 0;
	double perimeter = 0;
	double circlearea = 0;
	vector<Vec3f> circles;
	Point circle_center;
	HoughCircles(srcgray, circles, HOUGH_GRADIENT, 1, 200, 100, 30, 800, 1200);
	for (size_t i = 0; i < circles.size(); i++)
	{
   
		Point center((circles[i][0]), (circles[i][1]));
		int radius = (circles[i][2]);
		if (center.x <2200 && center.x > 1800 && center.y < 1900 && center.y > 1500 && radius > 900 && radius < 1100)
		{
   
			circle_R = radius + 12;
			circle_center = center;
			cout << "圆心X=" << center.x << "   " << "圆心Y=" << center.y << "   " << 
本程序是两相交交点,输入信息为两圆心坐标半径值。如有更好的算法,欢迎交流!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值