2016-11-30 4 views
-3

enter image description hereHoughtransformation in opencv fehlgeschlagen

Dies ist ein Bild oben. Ich verwende opencv, um es zu verarbeiten, und ich habe versucht, Hough Transformation zu verwenden, aber ist gescheitert. Außerdem stellte ich fest, dass es so schwierig ist, relative Parameter in der Hough-Transformation zu setzen.

Die Codes sind wie folgt:

#include <opencv2/opencv.hpp> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat srcImg = imread("srccenter.bmp"); 
    Mat greyImg; 
    cvtColor(srcImg, greyImg, COLOR_BGR2GRAY); 

    std::vector<cv::Vec3f> circles; 

    /// Apply the Hough Transform to find the circles 
    HoughCircles(greyImg, circles, CV_HOUGH_GRADIENT, 1, 10, 100, 20, 0, 0); 

    /// Draw the circles detected 
    for (size_t i = 0; i < circles.size(); i++) 
    { 
     Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); 
     int radius = cvRound(circles[i][2]); 
     circle(srcImg, center, 3, Scalar(0, 255, 255), -1); 
     circle(srcImg, center, radius, Scalar(0, 255, 0), 1); 
    } 

    namedWindow("srcImg", WINDOW_NORMAL); 
    imshow("srcImg", srcImg); 
    waitKey(0); 
    return 0; 
} 

Aber das Ergebnis ist ich einen Kreis nicht erkennen kann.

Wie kann ich den inneren Kreis erkennen?

Haben Sie gute Ideen?

+1

Haben Sie jemals in Betracht gezogen, Google "circle detection opencv" zu googeln? komm schon! Es gibt sogar ein offizielles Tutorial zu diesem http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html – Piglet

+0

Ich habe meine Codes aufgeschlagen, bitte schauen Sie nach. @ Ferkel –

+0

warum ist Ihr Min- und Max-Radius 0? stellen Sie sicher, dass Sie verstehen, was die Parameter tun und begrenzen Sie den Radius auf den Bereich, in dem Sie Ihren inneren Kreis erwarten. – Piglet

Antwort

1

Sie müssen den Parameter min_dist auf Null setzen. Dieser Parameter ist für den minimalen Abstand zwischen den erkannten Zentren. in deinem Fall sind die Zentren der Kreise so nah. Und Sie müssen auch Param_1, den Parameter des Canny Kantendetektors ändern.

+0

Ihr Rat ist recht nützlich. Wie du sagst, habe ich die relativen Parameter viele Male geändert und schließlich etwas über diese Parameter herausgefunden. @ Zahra rah –

Verwandte Themen