Harris角点检测

官方代码:

#include <opencv2/opencv.hpp>

using namespace cv;


Mat src, src_gray;

//设置阈值变量
int thresh = 150;
int thresh_max = 255;

//回调函数
void on_cornerHarris_demo(int,void*);

//窗口名
const char* src_window = "src";

int main()
{
    //读取图片
    src = imread("test.jpg");
    //转为灰度图
    cvtColor(src, src_gray, COLOR_RGB2GRAY);
    namedWindow(src_window);
    //创建滑动条
    createTrackbar("Threshold: ", src_window, &thresh, thresh_max, on_cornerHarris_demo);
    //显示原图片
    imshow(src_window, src);
    //调用demo
    on_cornerHarris_demo(0, 0);
    waitKey(0);
    return 0;
}

void on_cornerHarris_demo(int, void *)
{
    Mat dst, dst_norm, dst_norm_scaled;
    dst = Mat::zeros(src.size(), CV_32FC1);
    //harris检测
    cornerHarris(src_gray, dst, 2, 3, 0.04, BORDER_DEFAULT);
    //归一化
    normalize(dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat());
    //控制范围
    convertScaleAbs(dst_norm, dst_norm_scaled);
    //将检测出来的角点标记
    for (int i = 0; i < dst.rows; i++)//行
        for (int j = 0; j < dst.cols; j++)//列
            if (int(dst_norm.at<float>(i, j) > thresh))
                circle(dst_norm_scaled, Point(j, i), 3, Scalar(255, 255, 0), 2, 8, 0);//坐标相反
    //显示结果
    imshow("dst", dst_norm_scaled);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值