Я работаю над приложением для измерения радиуса круга. Цилиндр помещен на 2 опорных куска пластика. Когда я приближаю изображение, опорные детали становятся частью цилиндра. Я пытался использовать обнаружение контуров и использовать минимальные окружающие круги, чтобы найти самый большой и второй по величине объект, но внешний круг всегда неверен из-за поддерживающих объектов. Я использую C# и emgucv. Морфологические операции не сработают, поскольку повредят края круга и измерения будут неверными. Как правильно обнаружить и измерить круг? Любое решение на Python и OpenCV также подойдет.
Вот код:
Я работаю над приложением для измерения радиуса круга. Цилиндр помещен на 2 опорных куска пластика. Когда я приближаю изображение, опорные детали становятся частью цилиндра. Я пытался использовать обнаружение контуров и использовать минимальные окружающие круги, чтобы найти самый большой и второй по величине объект, но внешний круг всегда неверен из-за поддерживающих объектов. Я использую C# и emgucv. Морфологические операции не сработают, поскольку повредят края круга и измерения будут неверными. Как правильно обнаружить и измерить круг? Любое решение на Python и OpenCV также подойдет. Вот код: [code] VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); CvInvoke.FindContours(binaryimg, contours, null, RetrType.Tree, ChainApproxMethod.ChainApproxNone); VectorOfPoint largestContour = null; VectorOfPoint secondLargestContour = null; double maxArea = 0; double secondMaxArea = 0;
if (contours.Size < 2) { Console.WriteLine("Not enough contours found to detect both OD and ID.");
}
for (int i = 0; i < contours.Size; i++) { using (VectorOfPoint contour = contours[i])