Używam Visual Studio 2015, OpenCV.3 i EmguCV.3. Mój kod przedstawiony poniżej, a wynik jest pokazany na obrazku. Wiem, że problem jest wartości wejściowych funkcji HoughCircles, ale nie wiem, które dane wejściowe są odpowiednie dla tego obrazu. Doceniam każdą pomoc.HoughCircles Nie wykrywa kół prawidłowo w OpenCV
Image<Gray, byte> OriginalImage = new Image<Gray, byte>(Openfile.FileName);
Image<Gray, byte> ResizedImage = OriginalImage.Resize(OriginalImage.Width/2, OriginalImage.Height/2, Emgu.CV.CvEnum.Inter.Cubic);
//********** Convert Image to Binary
Image<Gray, byte> smoothImg =
ResizedImage.SmoothGaussian(5);
smoothImg._Erode(5);
smoothImg._Dilate(5);
Image<Gray, byte> BinaryImage =
smoothImg.ThresholdBinary(new Gray(20), new Gray(255));
//********** Find Circles
Image<Rgb, byte> ROIImgScaledCircles = ROIImgScaled.Convert<Rgb, byte>();
CircleF[] circles = smoothImg.HoughCircles(
new Gray(180),//cannyThreshold
new Gray(60),//circleAccumulatorThreshold
2.0, //dp:Resolution of the accumulator used to detect centers of the circles
10.0, //min distance
10, //min radius
128 //max radius
)[0]; //Get the circles from the first channel
foreach (CircleF cir in circles)
{
ROIImgScaledCircles.Draw(cir, new Rgb(235, 20, 30), 1);
}
pbxCircles.Image = ROIImgScaledCircles.ToBitmap();
Obraz oryginału:
założenia Koła:
Czy możesz podać oryginalny obraz? Sądzę, że spodziewasz się 2 kółek? –
@SimonMourier Edytowałem pytanie i dodałem oryginalny obraz. Właściwie tak, spodziewam się 2 kółek. –
Używam opencvsharp (który jest bardzo blisko C++/python próbek), nie emgucv, czy to dla ciebie ok? –