Ich versuche Kreise mit der Hough-Transformation zu erkennen.Kreis mit Hough-Transformation erkennen
Mit meinem aktuellen Code kann ich das unter
Aber ich will erkennen schwarzes Loch innerhalb des Kreises finden ich entdeckt habe. aber die Änderung der Parameter der Houghcircle-Methode ist mir nicht geholfen. Tatsächlich hat es Kreise gefunden, die nicht existieren.
Auch habe ich Ernte den Kreis versucht, die ich gefunden habe und das andere tun hough auf diesem neuen Teil auch nicht mir helfen, hat es zu transformieren.
hier ist mein Code
#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/opencv.hpp" // needs imgproc, imgcodecs & highgui
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src, circleroi;
/// Read the image
src = imread("/Users/Rodrane/Documents/XCODE/test/mkedenemeleri/alev/delikli/gainfull.jpg", 2);
/// Convert it to gray
// cvtColor(src, src_gray, CV_BGR2GRAY);
/// Reduce the noise so we avoid false circle detection
GaussianBlur(src, src, Size(3, 3), 2, 2);
// adaptiveThreshold(src,src,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,9,14);
vector<Vec3f> circles,circlessmall;
// Canny(src, src, 50 , 70, 3);
/// Apply the Hough Transform to find the circles
HoughCircles(src, circles, CV_HOUGH_GRADIENT, 1, src.rows/8, 200, 100, 0, 0);
/// Draw the circles detected
for(size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]), cvRound(circles[i][4]));
int radius = cvRound(circles[i][5]);
// circle center
circle(src, center, 3, Scalar(0,255,0), -1, 8, 0);
// circle outline
circle(src, center, radius, Scalar(0,255,0), 3, 8, 0);
circleroi = src(Rect(center.x - radius, // ROI x-offset, left coordinate
center.y - radius, // ROI y-offset, top coordinate
2*radius, // ROI width
2*radius));
// imshow("Hough Circle Transform Demo", circleroi);
}
resize(src, src, Size(src.cols/2, src.rows/2));
// threshold(circleroi, circleroi, 50, 255,CV_THRESH_BINARY);
// cout<<circleroi<<endl;
imshow("asd",src);
// imwrite("/Users/Rodrane/Documents/XCODE/test/mkedenemeleri/alev/cikti/deliksiz.jpg",circleroi);
waitKey(0);
return 0;
}
aktualisieren: seit hough verwendet Canny innerhalb ich manuell Canny verwendet werde, um zu sehen, ob es den Kreis oder nicht findet.
hier canny Ergebnisse mit Canny (src, src, 100, 200,3);
danke
Haben Sie es ohne Schwellenwert versucht? HoughCircles verwendet canny intern ... – Micka
gibt es keine Schwelle auf Bild. nur Gaussian Blur für die Beleuchtung, aber ich habe es auch deaktiviert. –
Könnten Sie bitte das Bild mit den Löchern posten, aber ohne die schwarzen Kreise. Ich kann in den ersten beiden Bildern keine schwarzen Löcher sehen. – kkuilla