zoukankan      html  css  js  c++  java
  • harris角点检测

    #include <iostream>      
    #include <opencv2/core/core.hpp>      
    #include <opencv2/highgui/highgui.hpp>   
    #include <imgproc/imgproc.hpp>    
    using namespace std;
    using namespace cv;
    
    #define WINDOW_NAME1 "【程序窗口1】"  
    #define WINDOW_NAME2 "【程序窗口2】"  
    Mat g_srcImage, g_srcImage1, g_grayImage;
    int thresh = 30;
    int max_thresh = 175;
    
    void on_CornerHarris(int, void*)
    {
        Mat dstImage;
        Mat normImage;
        Mat scaledImage;
        dstImage = Mat::zeros(g_srcImage.size(), CV_32FC1);
        g_srcImage1 = g_srcImage.clone();
        //进行角点检测  
        cornerHarris(g_grayImage, dstImage, 2, 3, 0.04, BORDER_DEFAULT);
        //归一化与转换  
        normalize(dstImage, normImage, 0, 255, NORM_MINMAX, CV_32FC1);
        convertScaleAbs(normImage, scaledImage);
        for (int j = 0; j < normImage.rows; j++)
        {
            for (int i = 0; i<normImage.cols; i++)
            {
                if ((int)normImage.at<float>(j, i)>thresh + 80)
                {
                    circle(g_srcImage1, Point(i, j), 5, Scalar(10, 10, 255), 2, 8, 0);
                    circle(scaledImage, Point(i, j), 5, Scalar(0, 10, 255), 2, 8, 0);
                }
            }
    
        }
        imshow(WINDOW_NAME1, g_srcImage1);
        imshow(WINDOW_NAME2, scaledImage);
    }
    
    int main() {
    
        g_srcImage = imread("../../sources/goal_3.png");
        if (!g_srcImage.data)
            return -1;
        imshow("g_srcImage", g_srcImage);
        g_srcImage1 = g_srcImage.clone();
        cvtColor(g_srcImage1, g_grayImage, COLOR_BGR2GRAY);
        namedWindow(WINDOW_NAME1, WINDOW_AUTOSIZE);
        createTrackbar("阈值:", WINDOW_NAME1, &thresh, max_thresh, on_CornerHarris);
        on_CornerHarris(0, 0);
        waitKey(0);
        return 0;
    }

    效果如下:

          

  • 相关阅读:
    异步编程与scrapy
    统计学 李航读书笔记
    算法模型手写
    《剑指offer》面试题的Python实现
    numpy 中文手册
    django部署
    Django ORM中使用update_or_create功能再解
    RabbitMQ(七)心跳控制 -- heartbeat
    重写__eq__函数——对象list中使用in index()——获得list中不同属性对象个数
    Python机器学习及分析工具:Scikit-learn篇
  • 原文地址:https://www.cnblogs.com/chen9510/p/8609683.html
Copyright © 2011-2022 走看看