Harris角点检测

来源:互联网 发布:青岛seo网络优化 编辑:程序博客网 时间:2024/05/17 19:14

官方代码:

#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);}
原创粉丝点击