Sto provando a rilevare i cerchi con l'uso della trasformazione di Hough.Rilevamento del cerchio usando la trasformazione di Hough
Con il mio codice attuale posso rilevare quella qui sotto
Ma voglio trovare buco nero all'interno del cerchio che ho rilevato. tuttavia non è stato possibile modificare i parametri del metodo houghcircle. In realtà ha trovato cerchi che non esistono.
Inoltre ho provato raccolto il cerchio ho trovato e fare un altro trasformata di Hough su questa nuova parte anche non mi ha aiutato.
Ecco il mio codice
#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;
}
Aggiornamento: dal Hough utilizza astuto dentro mi sono abituato manualmente astuto per vedere montone castrato che trova il cerchio o meno.
qui canny risultati con Canny (src, src, 100, 200,3);
ringraziamento
Hai provato senza soglia? HoughCircles utilizza internamente astutamente ... – Micka
non c'è alcuna soglia sull'immagine. solo sfocatura gaussiana per l'illuminazione ma l'ho disabilitata anche io. –
Potresti postare l'immagine con i fori ma senza cerchi neri, per favore. Non riesco a vedere nessun buco nero nelle prime due immagini. – kkuilla