我希望能够使用带有C#的openCV识别一些小组件的位置(中心)和角度。为此,我从网络摄像头抓取图片,并尝试使用Canny算法对其进行处理。不幸的是,结果不如预期的好。有时还可以,有时则没有。
我已经附加了一个来自凸轮的示例图像以及OpenCV的相应输出。
我希望有人能给我提示或一些代码片段,以实现我所期望的结果。这是AI通常完成的事情吗?
示例图片:
输入:
输出1:
输出2:
预期:
谢谢。
实际代码:
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)) ;