除了利用Harris進行角點檢測和利用Shi-Tomasi方法進行角點檢測外,還可以使用cornerEigenValsAndVecs()函數和cornerMinEigenVal()函數自定義角點檢測函數。如果對角點的精度有更高的要求,可以用cornerSubPix()函數將角點定位到子像素,從而取得亞像素級別的角點檢測效果。
(1)函數原型
cornerSubPix()函數在角點檢測中精確化角點位置,其函數原型如下:
C++: void cornerSubPix(InputArray image, InputOutputArray corners, Size winSize, Size zeroZone, TermCriteria criteria); C: void cvFindCornerSubPix(const CvArr* image, CvPoint2D32f* corners, int count, CvSize win, CvSize zero_zone, CvTermCriteria criteria);
(2)函數參數
函數參數說明如下:
image:輸入圖像
corners:輸入角點的初始坐標以及精准化後的坐標用於輸出。
winSize:搜索窗口邊長的一半,例如如果winSize=Size(5,5),則一個大小為的搜索窗口將被使用。
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+emVyb1pvbmWjusvRy/fH+NPy1tC85LXEZGVhZCByZWdpb26x37OktcTSu7Dro6zT0Mqx08PT2rHcw+LX1M/gudi+2NXztcTG5tLs0NSho8jnufsmIzIwNTQwO8nozqooLTEsLTEp1PKx7cq+w7vT0NXiuPbH+NPyoaM8YnI+CmNyaXRlcmlho7q9x7XjvqvXvLuvtfy0+rn9s8y1xNbV1rnM9bz+oaPSsr7Nyse1sbX8tPq0zsr9s6y5/WNyaXRlcmlhLm1heENvdW50o6y78tXfvce148671sOx5Luv0KHT2mNyaXRlcmlhLmVwc2lsb27KsaOszaPWubX8tPq5/bPMoaM8YnI+CjwvcD4KPHA+PC9wPgo8aDE+PHN0cm9uZz60+sLryr7A/Twvc3Ryb25nPjwvaDE+CjxwPjwvcD4KPHA+tPrC68q+wP27+dPaZ29vZEZlYXR1cmVzVG9UcmFjaygpvOyy4rP2wLS1xL3HteOjrMq508Njb3JuZXJTdWJQaXgoKbqvyv29q73HtePOu9bDvqvIt7W90cfP8cvYvLa+q7bIoaM8YnI+CjwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">/**
* @使用cornerSubPix()函數在goodFeaturesToTrack()的角點檢測基礎上將角點位置精確到亞像素級別
* @author holybin
*/
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include
實驗結果: