harris 检测角点


主要是使用函数 CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, //输入图像

                                                                                                       OutputArray corners, //角点数
                                                                                                       int maxCorners,    //最大角点数

                                                                                                       double qualityLevel, //最大最小特征值乘法因子

                                                                                                       double minDistance,  //角点之间最小距离
                                                                                                       InputArray mask=noArray(),

                                                                                                       int blockSize=3,
                                                                                                       bool useHarrisDetector=false,

                                                                                                       double k=0.04

);



// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
//#include <vector>

using namespace std;
using namespace cv;

Mat src, src_gray;

int maxCorners = 1000;
int maxTrackbar = 100;

RNG rng(12345);

char* source_window = "Image";

void goodFeaturesToTrack_demo(int, void*);
IplImage* bg_frame;
int main()
{
	

		src = imread("xxx.png", 1);
		cvtColor(src, src_gray, CV_BGR2GRAY);
		namedWindow(source_window, CV_WINDOW_AUTOSIZE);
		createTrackbar("角点个数:", source_window, &maxCorners, maxTrackbar, goodFeaturesToTrack_demo);

		goodFeaturesToTrack_demo(0, 0);
		
	
	
	waitKey(0);
	return 0;
}

void goodFeaturesToTrack_demo(int, void*)
{
	if (maxCorners<1)
	{
		maxCorners = 1;
	}

	//Shi-Tomasi 角点算法参数定义
	vector<Point2f> corners;
	double qualityLevel = 0.01;//最大最小特征值乘法因子
	double minDistance = 10;//角点之间最小距离
	int blockSize = 3;
	bool useHarrisDetector = false;
	double k = 0.04;


	Mat copy;
	copy = src.clone();

	goodFeaturesToTrack(src_gray, corners, maxCorners, qualityLevel, minDistance, Mat(), blockSize, useHarrisDetector, k);

	cout << "检测到角点数:" << corners.size() << endl;
	int r = 1;
	for (int i = 0; i<corners.size(); i++)
	{
		circle(copy, corners[i], r, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 2, 8, 0);
	}
	
	imshow(source_window, copy);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值