Shi-Tomasi 角點檢測

比Harris角點檢測更爲精確的一種檢測角點的方式
效果圖:
Shi-Tomasi角點檢測


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

//自定義角點最大值
int maxcorner = 50;
//滑動條最大值
int maxTrackBar = 150;

const char* src_window = "Image";

//輸入圖片
Mat src, src_gray;
//隨機顏色
RNG rng(1235);

//回調函數
void goodFeatureToTrack_Demo(int, void*);

int main()
{
    //讀入圖片
    src = imread("test.jpg");
    //轉換顏色,以便進行檢測
    cvtColor(src, src_gray, COLOR_RGB2GRAY);
    //創建窗口
    namedWindow(src_window,WINDOW_AUTOSIZE);
    //創建滑動條
    createTrackbar("max_corners", src_window, &maxcorner, maxTrackBar, goodFeatureToTrack_Demo);
    //顯示圖片
    imshow(src_window, src);
    //回調函數
    goodFeatureToTrack_Demo(0, 0);
    waitKey(0);
    return 0;
}

void goodFeatureToTrack_Demo(int, void *)
{
    //儲存所檢測到的點
    vector<Point2f> corners;
    //複製圖像,便於顯示
    Mat copy = src.clone();
    //調用goodFeaturesToTrack
    goodFeaturesToTrack(src_gray, corners, maxcorner, 0.01, 10, Mat(), 3, false, 0.04);
    //標記角點
    for (size_t i = 0; i < corners.size(); i++)
    {
        circle(copy, corners[i], 3, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 2);
    }
    //顯示標記結果
    imshow(src_window, copy);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章