2011-12-07 3 views
1

私はHoughLinesPを使って行を特定しました。しかし、私の問題は、検出された行がないことをどのように知るのかです。私はベクトル行をnullと比較しようとしましたが、何も起こりません。具体的には、ここに私のコードはあります:ハフラインP - 回線が検出されていないかどうかを知る方法?

for(size_t k=0; k<lines.size(); k++){ 
    Vec4i l = lines[k]; 
    line(gray, Point(l[0], l[1]), Point(l[2], l[3]),Scalar(0,0,255), 3, CV_AA); 
    double x = l[2]-l[0]; 
    double y = l[3]-l[1]; 
    double slope = (x/y); 
    double rad = atan(slope); 
    double pi = 3.1416; 
    double deg = (rad*180)/pi; 
    double fin = deg+90; 

    int part = 0; 
    if (lines.empty()){printf("NO LINE IN THIS PORTION OF THE IMAGE!");part = 0;} 
    else{ 
     if (fin>=0 && fin<=45){part = 1;} 
     else if (fin>45 && fin<=90){part = 2;} 
     else if (fin>90 && fin<=135){part = 3;} 
     else if (fin>135 && fin<=180){part = 4;} 
    } 
    printf("portion number = %d angle = %f PART = %d\n",j, fin, part); 
} 

私はpart変数で特定しています。検出された行がない場合は、part == 0が真であることを希望します。しかし、私は、検出された行がないかどうかを知る正しい方法を見つけることができません。イメージ内に既に線がある場合は、角度を印刷するだけです。ありがとう!

答えて

1

linesベクトルがループ外で空であるかどうかを確認する必要があります。あなたが今設定した方法linesは、lines.size() > 0の場合にのみループが実行されるので、空であるとは決して検出されません。ここで

は修正です:

int part = 0; 
double fin = -1.0; // just an arbitrary sentinel value (can be whatever you want here). 

if(lines.empty()) 
{ 
    part = 0; 
    fin = -1.0; 
    printf("portion number = %d angle = %f PART = %d\n",j, fin, part); 
    printf("NO LINE IN THIS PORTION OF THE IMAGE!"); 
} 
else 
{ 
    for(size_t k=0; k<lines.size(); k++){ 
     Vec4i l = lines[k]; 
     line(gray, Point(l[0], l[1]), Point(l[2], l[3]),Scalar(0,0,255), 3, CV_AA); 
     double x = l[2]-l[0]; 
     double y = l[3]-l[1]; 
     double slope = (x/y); 
     double rad = atan(slope); 
     double pi = 3.1416; 
     double deg = (rad*180)/pi; 
     fin = deg+90; 

     if (fin>=0 && fin<=45){part = 1;} 
     else if (fin>45 && fin<=90){part = 2;} 
     else if (fin>90 && fin<=135){part = 3;} 
     else if (fin>135 && fin<=180){part = 4;} 

     printf("portion number = %d angle = %f PART = %d\n",j, fin, part); 
    } 
} 
関連する問題