我如何知道cornerHarris计算的拐角数量?我写的函数如下:
...
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
不会计算特定数量的角。它将创建一个新图像dst
,其大小与原始图像gray
相同。您可以定义一个阈值,从该阈值上方可以找到拐角。如果将阈值定义为较小,则将有更多的角。
在您的情况下,可以找到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 Corner Detector Tutorial和cornerHarris OpenCV documentation。
关于c++ - 使用cornerHarris知道角的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37464916/