OpenCV4开发入门教程125:goodFeaturesToTrack

索引地址:系列索引

角点介绍:角点检测

1
2
3
4
5
6
7
8
9
10
void cv::goodFeaturesToTrack 	( 	InputArray  	image,
OutputArray corners,
int maxCorners,
double qualityLevel,
double minDistance,
InputArray mask = noArray(),
int blockSize = 3,
bool useHarrisDetector = false,
double k = 0.04
)
  • 输入位、浮点32位、单通道图片
  • 检测到的角点向量
  • 返回的最大角数。如果还有角比发现的角多,则返回其中最强的角。maxCorners<=0意味着没有设置最大值的限制,并且返回所有检测到的角点。
  • 表征图像角点最小可接受质量的参数。参数值乘以最佳拐角质量度量,即最小特征值或Harris函数响应。质量指标低于产品的角落被拒收。例如,如果最佳角点的质量度量值为1500,质量等级为0.01,则质量度量值小于15的所有角点都将被拒绝。
  • 返回角点之间的最小可能欧氏距离。
  • 可选感兴趣区域。如果图像不是空的(它需要具有CV_8UC1类型和与图像相同的大小),它将指定检测角点的区域。
  • 用于计算每个像素邻域上的导数协变矩阵的平均块大小。
  • 指示是使用Harris检测器还是cornerMinEigenVal的参数。
  • Harris探测器的自由参数。

确定图像上的强角点。该函数查找图像或指定图像区域中最突出的角点

  • 函数使用cornerMinEigenVal或cornerHarris计算每个源图像像素处的角点质量度量。
  • 函数执行非最大值抑制(保留3x3邻域中的局部最大值)。
  • 最小特征值小于qualityLevel的角点⋅maxx,yqualityMeasureMap(x,y)被拒绝。
  • 其余的角点按质量度量按降序排序。
  • 函数会丢弃距离小于maxDistance的强角点的每个角点。
  • 该函数可用于初始化对象的基于点的跟踪器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
Mat image = imread("Test.png");
Mat imgGray;
cvtColor(image, imgGray, COLOR_BGR2GRAY);

vector<Point2f> corners;
int maxCorners = 500;
double qualityLevel = 0.01;
double minDistance = 10;
Mat mask;
int blockSize = 3;
int gradientSize = 3;
bool useHarrisDetector = false;
double k = 0.04;
goodFeaturesToTrack(imgGray,
corners,
maxCorners,
qualityLevel,
minDistance,
mask,
blockSize,
gradientSize,
useHarrisDetector,
k);

Scalar color(0, 0, 255);
MarkerTypes markerType = MARKER_TILTED_CROSS;
int markerSize = 8;
int thickness = 2;
for(int i=0; i<corners.size(); i++)
{
drawMarker(image,
corners[i],
color,
markerType,
markerSize,
thickness);
}

imshow("image", image);

waitKey();

return 0;
}
goodfeaturestotrack

OpenCV4开发入门教程125:goodFeaturesToTrack
https://feater.top/opencv/opencv-goodfeaturestotrack
作者
JackeyLea
发布于
2020年11月10日
许可协议