栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

opencv (五十三)亚像素角点检测

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opencv (五十三)亚像素角点检测

小白学视觉,笔记,扩展


criteria迭代终止条件,常用迭代次数和优化结果精度结合使用,二者任意满足,终止;

#include 
#include 
#include 

using namespace cv;
using namespace std;

int main()
{
	system("color F0");  //改变DOS界面颜色
	Mat img = imread("lena.png", IMREAD_COLOR);
	if (!img.data)
	{
		cout << "读取图像错误,请确认图像文件是否正确" << endl;
		return -1;
	}
	//彩色图像转成灰度图像
	Mat gray;
	cvtColor(img, gray, COLOR_BGR2GRAY);

	//提取角点
	int maxCorners = 100;  //检测角点数目
	double quality_level = 0.01;  //质量等级,或者说阈值与最佳角点的比例关系
	double minDistance = 0.04;  //两个角点之间的最小欧式距离
	vector corners;
	goodFeaturesToTrack(gray, corners, maxCorners, quality_level, minDistance, Mat(), 3, false);

	//计算亚像素级别角点坐标
	vector cornersSub = corners;  //角点备份,防止被函数修改
	Size winSize = Size(5, 5);
	Size zeroZone = Size(-1, -1);//没有死区,即全部提取
	//TermCriteria(int type, int maxCount, double epsilon);
	TermCriteria criteria = TermCriteria(TermCriteria::EPS + TermCriteria::COUNT,  40, 0.001);//迭代终止条件
	cornerSubPix(gray, cornersSub, winSize, zeroZone, criteria);

	//输出初始坐标和精细坐标
	for (size_t i = 0; i < corners.size(); i++)
	{
		string str = to_string(i);
		str = "第" + str + "个角点初始坐标:";
		cout << str << corners[i] << "   精细后坐标:" << cornersSub[i] << endl;
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号