1. 程式人生 > >【OpenCV】Harris角點檢測

【OpenCV】Harris角點檢測

#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);

輸出結果: