2016-08-21 8 views
0

対MathWorks社のMATLABに変換私は、次のイメージを持っている:私はハフMATLABで変換を使用する場合

、私は円の100%検出を取得します。ハフは、OpenCVのCPP

私はMATLABで次のコードを使用します

[centersDark, radiiDark] = imfindcircles(closed_pic,[Rmin Rmax],'ObjectPolarity','dark'); 

私はcppの中で、次のコードを使用します。私は、二値画像上のcppでハフtransfornを実行しようとすると、また

cv::medianBlur(mat, mat, 5);  
cv::Mat grayMat;  
cv::cvtColor(mat, grayMat, cv::COLOR_BGR2GRAY);  
std::vector<cv::Vec3f> circles1;  
cv::HoughCircles(grayMat, circles1, CV_HOUGH_GRADIENT, 1, 20, 30, 30, 0, 0); 

、Iドン何の検出もありません。それを機能させるために私は何ができますか?

答えて

0

出力がハフル円の入力として意味をなすならば、パラメータも見てください。あなたの20のパラメータは、最小中心距離です。円が近くにあるとき。 Algが失敗する可能性があります。また、canny()のエッジ検出に渡されるしきい値のような外観の30,30個のパラメータを使用しています。これらは第1および第2のしきい値です。これは同じ閾値です。 もしあなたがundestandをしないと、パラメータはドキュメントからの例を使用し、クリアパラメータのみを更新します。この例では、オブジェクトの最後の2 MinとMax半径を探しています..

HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 
      2, gray->rows/4, 200, 100); 
+0

こんにちは...あなたは最大値と最小値として0を書いてみるとあなたは気にしないように書いています... 同じパラメータは別の写真にも作用するので、それは問題ではないと思います。 – ilana

+0

OKです。私はポストを更新し、コードはちょうど0があると言っていますmaxを(cols、rows)の最大値と最小半径を0として入れます – globalex