使用角落哈里斯知道角落的数字

Know the number of the corner using cornerHarris

本文关键字:角落 数字 哈里斯      更新时间:2023-10-16

我怎么知道角哈里斯计算的角数?我写的函数如下:

    ...
    Mat gray;
    cvtColor( img, gray, CV_BGR2GRAY );
    int thresh = 160;
    Mat dst, dst_norm, dst_norm_scaled;
    dst = Mat::zeros( img.size(), CV_32FC1 );
    // Detector parameters
    int blockSize = 2;
    int apertureSize = 3;
    double k = 0.04;
    // Detecting corners
    cornerHarris( gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );
    // Normalizing
    normalize( dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat() );
    convertScaleAbs( dst_norm, dst_norm_scaled );

cornerHarris不计算特定数量的角。它会创建一个与原始图像gray具有相同大小的新图像dst。您可以定义一个阈值,从上面的该值中可以找到拐角。如果将阈值定义为较小,则将拥有更多角。
在您的情况下,您可以找到预定义值thresh的角,如下所示:

for( int j = 0; j < dst_norm.rows ; j++ ){ 
    for( int i = 0; i < dst_norm.cols; i++ ){
        if( (int) dst_norm.at<float>(j,i) > thresh ){
                /* Whatever your would like to do with that corner */
        }
    }
}

有关详细信息,请参阅此 Harris 角落检测器教程和角落Harris OpenCV 文档。