除了利用Harris进行角点检测外,还可以利用Shi-Tomasi方法进行角点检测。Shi-Tomasi算法是Harris算法的改进。OpenCV实现此算法的函数名为goodFeaturesToTrack,这是因为概算子是1994年在文章《Good Features to Track》中被提出的。
goodFeaturesToTrack()函数结合了Shi-Tomasi算子,用于确定图像的强角点,函数原型:
void goodFeaturesTrack(InputArray image, OutputArray corner, int maxCorners, double qualityLeval, double minDistance, Inputarray mask=noArray, int blockSize=3, bool useHarrisDetector=false, double k=0.4)
此外,goodFeaturesToTrack()函数可用来初始化一个基于点的对象跟踪操作。
代码示例:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace std;
using namespace cv;int main() {int maxCornerNumber = 50;Mat srcImage, grayImage;srcImage = imread("/Users/dwz/Desktop/cpp/1.jpg");cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);vector<Point2f> corners;double qualityLevel = 0.01;double minDistance = 10;int blockSize = 3;double k = 0.04;Mat copy = srcImage.clone();goodFeaturesToTrack(grayImage,corners, // 输入图像maxCornerNumber, // 检测到的角点qualityLevel, // 角点的最大角点数量minDistance, //Mat(),blockSize,false,k);int r = 4;for (unsigned int i=0; i<corners.size(); i++){circle(copy, corners[i], r, Scalar(0, 0, 255), -1, 8, 0);}imwrite("corner.jpg", copy);return 0;
}
输入:
输出:
本文发布于:2024-02-03 02:57:03,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170690022148192.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |