opencv---Harris角点检测和shi-Tomasi角度检测

Harris角点检测方法

void cornerHarris( InputArray src, OutputArray dst, int blockSize, int ksize, double k, int borderType = BORDER_DEFAULT );

在这里插入图片描述

shi-Tomasi角度检测

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

在这里插入图片描述

#include "opencv2/opencv.hpp"
#include <vector>
using namespace cv;
using namespace std;

//******************************************************************
int val=130;
int max_val=255;
Mat src,dst,gray;
//Harris角点检测

void Harris_Dome(int,void*)
{
    Mat dst=Mat::zeros(src.size(),CV_32FC1);
    //Harris角点检测
        Mat result,normScale;
    int blocksize=2;
    int ksize=3;
    double k=0.04;
    //角点检测
    cornerHarris(gray,dst,blocksize,ksize,k,BORDER_DEFAULT);
    normalize(dst,result,0,255,NORM_MINMAX);
    convertScaleAbs(result,normScale);

    Mat resIamg=src.clone();
    for(int row=0;row<resIamg.rows;row++)
    {
       uchar* currentRow=normScale.ptr(row);
        for(int col=0;col<resIamg.cols;col++)
        {
            int value=(int)*currentRow;
            if(value > val){

                circle(resIamg,Point(col,row),2,Scalar(0255,0),2,8,0);
            }
         currentRow++;
        }
    }

imshow("Harris角点检测",resIamg);

    //shi_Tomasi角点检测
    vector<Point2f> corners;
    double qualitylevel=0.01;
    double minDistance=10;
    int blockSize1=3;
    bool useHarris=false;
    double k1=0.04;

    Mat res=src.clone();
goodFeaturesToTrack(gray,corners,val,qualitylevel,minDistance,Mat(0,blockSize1,useHarris,k1));
    printf("Number of detected corners:%d\n",corners.size());
    for(int i=0;i<corners.size();i++)
    {
        circle(res,corners[i],2,Scalar(0,0,255),2,8,0);

    }

    imshow("shi_Tomasi角点检测",res);
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    src=imread("./image/1.jpg");
    if(src.empty())
    {
        printf("could not load image....\n");
        return -1;
    }
    imshow("input",src);
    cvtColor(src,gray,CV_BGR2GRAY);
    namedWindow("output",CV_WINDOW_AUTOSIZE);

    createTrackbar("corner_harris","output",&val,max_val,Harris_Dome);
    Harris_Dome(0,0);

    return a.exec();
}

//************************************************************************************

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值