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

opencv 专栏收录该内容
24 篇文章 0 订阅

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

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

在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值