首先進行粗檢測,函式goodfeaturestotrack,儲存進入corners中,然後cornersubpix函式進行亞畫素精確匹配,設定結束條件。
由於實際應用中線條較粗,因此
corner_blocksize = 9;
corner_qualitylevel = 0.6;
其他引數可以微調。
std::vectorcorners;
//double qualitylevel = 0.5;
double mindistance = 10;
int blocksize = corner_blocksize, gradientsize = corner_blocksize;
bool useharrisdetector = true;
double k = 0.04;
cv::mat copy = img3.clone();
cv::goodfeaturestotrack( copy,
corners,
max_corners,
corner_qualitylevel,
mindistance,
cv::mat(),
blocksize,
gradientsize,
useharrisdetector,
k );
int radius = 4;
for( size_t i = 0; i < corners.size(); i++ )
cv::termcriteria criteria = cv::termcriteria(
cv::termcriteria::max_iter + cv::termcriteria::eps,
40,0.001);
cv::cornersubpix(img3, corners, cv::size(corner_blocksize, corner_blocksize), cv::size(-1, -1), criteria);
for (int i = 0; i < corners.size(); i++)
參考: opencv 亞畫素點檢測
之前方面的總結 之前用的harris和shi tomasi進行角點檢測時得到的都是自己想要的角點,這些角點的座標都是粗略的,要想得到最完美的角點檢測就是利用亞畫素級角點檢測 若我們進行的不是影象處理的識別特徵點而是進行幾何測量,通常需要更高的精度前兩種角點檢測只能提供簡單畫素的座標值,也就是說有時候...
檢測亞畫素級角點
用cornersubpix 函式將角點定位到子畫素,從而取得亞畫素級別的角點檢測效果。尋找更精確的角點位置 不是整數型別的位置,而是更精確的浮點型別位置 如何將求得的座標值精確到亞畫素級精度?方法就是向量的點積理論 乙個向量和其正交的向量的點積為0,角點我們之前有說過了,就是兩個邊緣的相交,可以滿足...
OpenCV第十二講 角點檢測與亞畫素精度
角點檢測被定義兩條邊的交點,在實際應用中,大多數所謂的角點檢測方法檢測的是擁有特定特徵的影象點,而不僅僅是角點。角點 如果某一點在任意方向的乙個微小變動都會引起灰度很大的變化,那麼將其稱之為角點。角點檢測演算法 基於二值影象的角點檢測 基於輪廓曲線的角點檢測 harris角點檢測 cornerhar...