Я хотел бы иметь возможность распознавать положение (центр) и угол некоторых небольших компонентов с openCV с C #.Чтобы добиться этого, я беру фотографии с веб-камеры и пытаюсь обработать их с помощью алгоритма Канни.К сожалению, результаты не так хороши, как ожидалось.Иногда это нормально, иногда это не так.
Я приложил пример изображения с камеры и соответствующий вывод OpenCV.
Я надеюсь, что кто-то может дать мне подсказки или, возможно, некоторые фрагменты кода, как достичь желаемых результатов.Это то, что обычно делается с ИИ?
Примеры изображений:
Вход:
![Input image](https://i.stack.imgur.com/3ysjem.jpg)
Выход 1:
![enter image description here](https://i.stack.imgur.com/ViHyCm.png)
Выход 2:
![enter image description here](https://i.stack.imgur.com/kfZZVm.png)
Ожидаемый:
![enter image description here](https://i.stack.imgur.com/RkeX4m.png)
Спасибо.
Фактический код:
Mat src;
src = BitmapConverter.ToMat(lastFrame);
Mat dst = new Mat();
Mat dst2 = new Mat();
Cv2.Canny(src, dst, hScrollBar1.Value, hScrollBar2.Value);
// Find contours
OpenCvSharp.Point[][] contours; //vector<vector<Point>> contours;
HierarchyIndex[] hierarchyIndexes; //vector<Vec4i> hierarchy;
Cv2.FindContours(dst, out contours, out hierarchyIndexes, RetrievalModes.External, ContourApproximationModes.ApproxTC89L1);
foreach (OpenCvSharp.Point[] element in contours)
{
var biggestContourRect = Cv2.BoundingRect(element);
Cv2.Rectangle(dst,
new OpenCvSharp.Point(biggestContourRect.X, biggestContourRect.Y),
new OpenCvSharp.Point(biggestContourRect.X + biggestContourRect.Width, biggestContourRect.Y + biggestContourRect.Height),
new Scalar(255, 0, 0), 3);
}
using (new Window("dst image", dst)) ;
using (new Window("src image", src)) ;