gpt4 book ai didi

c# - C# 上的边缘检测

转载 作者:行者123 更新时间:2023-11-30 15:09:03 24 4
gpt4 key购买 nike

我有一个像这样的黑白图像(颜色叠加层是我的,可以删除): enter image description here我需要弄清楚显示的手的边缘,我该怎么做?

我目前的算法:

        List<Point> edgePoints = new List<Point>();
for (int x = 0; x < largest.Rectangle.Width && edgePoints.Count == 0; x++) {
//top
for (int y = 0; y < largest.Rectangle.Height - 3 && edgePoints.Count == 0; y++) {
if (colorGrid[x, y].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y + 1].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y + 2].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y + 3].ToArgb() == Color.White.ToArgb()
) {
edgePoints.Add(new Point(x, y));
//g.DrawLine(new System.Drawing.Pen(Color.Orange), new Point(largest.Rectangle.X + x, largest.Rectangle.Y + y), new Point(largest.Rectangle.X + x, largest.Rectangle.Y + y + 3));
break;
}
}
//bottom
for (int y = largest.Rectangle.Height - 1; y > 3 && edgePoints.Count == 0; y++) {
if (colorGrid[x, y].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y - 1].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y - 2].ToArgb() == Color.White.ToArgb() &&
colorGrid[x, y - 3].ToArgb() == Color.White.ToArgb()
) {
edgePoints.Add(new Point(x, y));
//g.DrawLine(new System.Drawing.Pen(Color.Orange), new Point(largest.Rectangle.X + x, largest.Rectangle.Y + y), new Point(largest.Rectangle.X + x, largest.Rectangle.Y + y + 3));
break;
}
}
}

产生相当明确的轮廓,但如果 和 在任何地方弯曲,则不会检测到该边缘。即,如果我将手横向握住,我会得到顶部手指和底部手指的边缘,但仅此而已。

我该怎么做才能纠正这个问题并获得真正的优势?

最佳答案

看看这样的项目:http://code.google.com/p/aforge/这将对您有很大帮助,您不必重新发明轮子!

关于c# - C# 上的边缘检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com