33 Opencv ShiTomasi角点检测

文章目录

  • [goodFeaturesToTrack 算子](#goodFeaturesToTrack 算子)
  • 示例

goodFeaturesToTrack 算子

c 复制代码
goodFeaturesToTrack(src,corners,maxCorners,quality_level,min_distance,Mat(),block_size,use_harris,k);
1.src:输入图像,输入的图像必须是8位或32位单通道图像
2.corners:输出的角点使用vector<Point2f>存储
3.maxCorners:最大角点数目,也就是corners集合中能存放的最大交点数,也就是最强的前corners个角点
4.quality_level:质量水平系数,是0.01~1之间的系数,其中系数越大检测到的角点就越少,反之亦然
5.min_distance:角点之间的最小距离,小于此距离的角点会被忽略,距离越大有可能检测到的角点就越少
6.Mat()掩码,mask=0忽略,基础用法忽略即可
7.block_size:Sobel算子,使用的邻域,四邻域,八邻域等 3,5,7
9.user_harris:是否使用harris检测,true是,false否
10.k:harris角点检测时使用一般为0.04,user_harris=false时此参数会被忽略

示例

c 复制代码
#include <opencv2/opencv.hpp> // 包含OpenCV库的主要头文件
#include <iostream>           // 包含标准输入输出流的头文件

using namespace cv;           // 使用cv命名空间,避免每次调用OpenCV函数时都得加上cv::
using namespace std;          // 使用std命名空间,避免每次调用C++标准库函数时都得加上std::

int num_corners = 25;         // 设置初始要检测的角点数量为25个
int max_corners = 200;        // 设置可检测的最大角点数量为200个
const char* output_title = "ShiTomasi Detector"; // 定义输出窗口的标题
void ShiTomasi_Demo(int, void*); // 声明回调函数,用于更新角点检测结果

Mat src, gray_src;            // 定义两个矩阵变量,src用于存储原始彩色图像,gray_src用于存储灰度图像
RNG rng(12345);               // 创建一个随机数生成器,用于给角点标记颜色

// 主函数
int main(int argc, char** argv) {
	src = imread("D:/vcprojects/images/home.jpg"); // 加载指定路径的图像到src矩阵中
	if (src.empty()) {                             // 检查图像是否成功加载
		printf("could not load image...\n");       // 如果未成功加载,则打印错误信息
		return -1;                                 // 并退出程序,返回-1表示错误
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE); // 创建一个名为"input image"的窗口,大小自动调整
	imshow("input image", src);                     // 在"input image"窗口中显示原始图像

	cvtColor(src, gray_src, COLOR_BGR2GRAY);        // 将彩色图像转换为灰度图像

	namedWindow(output_title, CV_WINDOW_AUTOSIZE);  // 创建一个用于显示角点检测结果的窗口
	createTrackbar("Num Corners:", output_title, &num_corners, max_corners, ShiTomasi_Demo); // 创建滑动条以动态改变角点数量,并绑定到回调函数
	ShiTomasi_Demo(0, 0);                           // 调用回调函数初始化显示

	waitKey(0);                                     // 等待按键事件(无限期等待)
	return 0;                                       // 程序正常结束,返回0
}

// 回调函数,当滑动条值变化时被调用
void ShiTomasi_Demo(int, void*) {
	if (num_corners < 5) {                          // 确保角点数量不少于5个
		num_corners = 5;
	}
	vector<Point2f> corners;                        // 定义一个vector容器用于存储检测到的角点坐标
	double qualityLevel = 0.01;                     // 设置质量水平阈值,决定最小特征值的下限
	double minDistance = 10;                        // 设置角点之间的最小距离
	int blockSize = 3;                              // 设置计算导数自相关矩阵时考虑的邻域大小
	bool useHarris = false;                         // 设置是否使用Harris检测器,默认不使用
	double k = 0.04;                                // Harris角点检测器使用的自由参数k值

	Mat resultImg = gray_src.clone();               // 复制灰度图像到resultImg中,作为绘制角点的基础图
	cvtColor(resultImg, resultImg, COLOR_GRAY2BGR); // 将灰度图像转换回彩色图像,以便能够绘制彩色圆圈标记角点

	goodFeaturesToTrack(gray_src, corners, num_corners, qualityLevel, minDistance, Mat(), blockSize, useHarris, k); // 检测角点并将它们存入corners向量中
	printf("Number of Detected Corners:  %d\n", corners.size()); // 打印检测到的角点数量

	for (size_t t = 0; t < corners.size(); t++) {   // 遍历所有检测到的角点
		circle(resultImg, corners[t], 2, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 2, 8, 0); // 在每个角点位置绘制彩色圆圈
	}
	imshow(output_title, resultImg);                // 在"ShiTomasi Detector"窗口中显示带有角点标记的结果图像
}
相关推荐
FreeCode17 小时前
LangChain1.0智能体开发:消息组件(Messages)
人工智能·langchain·agent
视觉AI17 小时前
为什么 transformers 要 import TensorFlow
人工智能·tensorflow·neo4j
Coovally AI模型快速验证18 小时前
未来已来:从 CVPR & ICCV 观察 2025→2026 年计算机视觉的七大走向
人工智能·深度学习·目标检测·计算机视觉·stable diffusion
ZEGO即构开发者18 小时前
【ZEGO即构开发者日报】Soul AI Lab开源播客语音合成模型;腾讯混元推出国内首个交互式AI播客;ChatGPT Go向用户免费开放一年......
人工智能·aigc·语音识别·实时音视频
沫儿笙18 小时前
ABB焊接机器人节气装置
人工智能·机器人
Geo_V18 小时前
提示词工程
人工智能·python·算法·ai
陈果然DeepVersion18 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(七)
java·人工智能·spring boot·微服务·kafka·面试题·rag
B站_计算机毕业设计之家18 小时前
计算机视觉:python车辆行人检测与跟踪系统 YOLO模型 SORT算法 PyQt5界面 目标检测+目标跟踪 深度学习 计算机✅
人工智能·python·深度学习·算法·yolo·目标检测·机器学习
云资源服务商18 小时前
阿里云无影AgentBay:开启AI智能体“自进化”时代的云端基础设施
人工智能·阿里云·云计算
SEO_juper19 小时前
AI SEO实战:利用人工智能提升网站排名与流量的完整策略
人工智能·搜索引擎·百度·ai·seo·数字营销