OpenCV入門:Harris角點檢測
阿新 • • 發佈:2018-12-25
Harris角點檢測
#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; /* Harris角點檢測:void cornerHarris(InputArray src,OutputArray dst, int blockSize, int ksize, double k, intborderType=BORDER_DEFAULT ) 第一個引數,InputArray型別的src,輸入影象,即源影象,填Mat類的物件即可,且需為單通道8位或者浮點型影象。 第二個引數,OutputArray型別的dst,函式呼叫後的運算結果存在這裡,即這個引數用於存放Harris角點檢測的輸出結果,和源圖片有一樣的尺寸和型別。 第三個引數,int型別的blockSize,表示鄰域的大小,更多的詳細資訊在cornerEigenValsAndVecs()中有講到。 第四個引數,int型別的ksize,表示Sobel()運算元的孔徑大小。 第五個引數,double型別的k,Harris引數。 第六個引數,int型別的borderType,影象畫素的邊界模式,注意它有預設值BORDER_DEFAULT。更詳細的解釋,參考borderInterpolate( )函式。 */ int main() { namedWindow("原始圖",0); //以灰度模式載入影象並顯示 Mat imageSrc = imread("build.jpg", 0); imshow("原始圖", imageSrc); //進行Harris角點檢測找出角點 Mat cornerStrength; cornerHarris(imageSrc, cornerStrength, 2, 3, 0.01); namedWindow("角點檢測後的二值效果圖",0); //對灰度圖進行閾值操作,得到二值圖並顯示 Mat harrisCorner; threshold(cornerStrength, harrisCorner, 0.00001, 255, THRESH_BINARY); imshow("角點檢測後的二值效果圖", harrisCorner); waitKey(0); return 0; }
效果圖: