【OpenCV】Harris角點檢測
阿新 • • 發佈:2019-02-06
#include <opencv2/opencv.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp> #include <vector> #include <windows.h> #include <iostream> Mat image; image = imread("3.jpg"); Mat resizeImg; resize(image, resizeImg, Size(), 0.5, 0.5, INTER_LINEAR); Mat grayImg; cvtColor(resizeImg, grayImg, CV_BGR2GRAY); Mat dstImg = Mat::zeros(grayImg.size(), CV_32FC1); cornerHarris(grayImg, dstImg, 3, 3, 0.04); Mat norImg; normalize(dstImg, norImg, 0, 255, CV_MINMAX, CV_32FC1, Mat()); Mat scaleImg; convertScaleAbs(norImg, scaleImg); int thresh = 100; for (int i = 0; i < resizeImg.rows; i++) { uchar *data = scaleImg.ptr<uchar>(i); for (int j = 0; j < resizeImg.cols; j++) { if ((int)*data++ > thresh) { circle(resizeImg, Point(j, i), 5, Scalar(0, 0, 255), 1); circle(scaleImg, Point(j, i), 5, Scalar(0, 0, 255), 1); } } } imshow("原圖", resizeImg); imshow("角點", scaleImg); waitKey(0);
輸出結果: