Houghtransformation 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?
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
Ich habe meine Codes aufgeschlagen, bitte schauen Sie nach. @ Ferkel –
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