绪:
最常用的角点检测方式是Harris角点检测,
OpenCV供给了Harris角点检测的接口cornerHarris(),但Harris检测的角点是像素级的,且检测速度较慢;
这里介绍OpenCV另一个功能更为壮大角点检测函数goodFeaturesToTrack(),
不仅撑持Harris角点检测,也撑持Shi Tomasi算法的角点检测 。
但该函数检测的角点依然是像素级此外 。
若想获取更为邃密的角点坐标,
则需要与cornerSubPix()函数共同利用,获得亚像素角点 。
文章插图
需要这些哦
opencv 2410
方式/
1goodFeaturesToTrack格局:
void goodFeaturesToTrack(
InputArray image, //输入图像
OutputArray corners, //输出角点vector
int maxCorners, //最年夜角点数量
double qualityLevel, // 质量程度系数
double minDistance, // 最小距离,小于此距离的点忽略
InputArray mask = noArray(), // mask=0的点忽略
int blockSize = 3, //邻域数
bool useHarrisDetector = false, // false =Shi Tomasi metric
double k = 0.04 //Harris角点检测时利用
);
参数:
第一个参数是输入图像(8位或32位单通道图);
第二个参数是检测的所有角点,类型为vector或数组,由给定的参数类型而定 。 若是是vector,那么它应该是一个包含cv::Point2f的vector对象;若是类型是cv::Mat,那么它的每一行对应一个角点,点的x、y位置别离是两列;
第三个参数用于限制检测到的点数的最年夜值;
第四个参数暗示检测到的角点的质量程度(凡是是0.10到0.01之间的数值,不克不及年夜于1.0);
第五个参数用于区分相邻两个角点的最小距离(小于这个距离得点将进行归并);
第六个参数是mask,若是指定,它的维度必需和输入图像一致,且在mask值为0处不进行角点检测 。
第七个参数是blockSize,暗示在计较角点时介入运算的区域大小,常用值为3,可是若是图像的分辩率较高则可以考虑利用较年夜一点的值;
第八个参数用于指定角点检测的方式,若是是true则利用Harris角点检测,false则利用Shi Tomasi算法;
第九个参数是在利用Harris算法时利用,最好利用默认值0.04;
文章插图
2goodFeaturesToTrack应用
推荐阅读
- OpenCV:相机标定示例程序的使用
- OpenCV:相机标定函数和程序
- AE的动力角点效果怎么制作
- 解决无数人对安装opencv环境变量疑惑的终极答案
- python3+opencv3用拉普拉斯算子实现边缘检测
- python3.6.5环境 opencv3.3.1进行直方图均衡