我的数学不是很好,所以我很难找到算法做到这一点:
我正在尝试找一个帮助我找到红色多边形的算法,然后,这个多边形内的所有单元格都将变为红色。
此刻我正在使用C#,我有一个带有网格颜色图的多维数组,所以我必须对它进行处理;但我不知道我能做些什么。
private Color[,] mapColor;
mapColor= new Color[8, 8];
提前致谢
答案 0 :(得分:0)
问题不太清楚,我看不到图像(被防火墙阻挡)。我的理解是你想要从红色单元格开始,并尝试找到多边形,从而遵循所有可能的路径。
如果是问题,听起来就像是图形问题。您可以使用BFS(广度优先搜索)算法来解决它,在网格中将其视为图形(每个单元格可以有8个边缘 - 如果您想要考虑对角线方式 - 或者如果您只想考虑4个边缘/向下和向左/向右方向)。
BFS将返回最短路径。如果您想要所有可能的路径,则应使用DFS(深度优先搜索)算法。
答案 1 :(得分:0)
只需每隔64个像素迭代一次位图,然后调用一个检查附近像素的函数,确认它找到了一个红色方块。只要你的图像中存在高对比度,就不应该太难找到偏向红色的地方。
e.g。
List<KeyValuePair<int, int>> PossibleCoords = new List<KeyValuePair<int,int>();
for(int i = 0; i < Bitmap.Width/64; i++)
{
for(int j = 0; j < Bitmap.Height/64)
{
if(Bitmap.GetPixel(i*64, j*64).R > 200)
{
KeyValuePair<int, int> temp = new KeyValuePair<int, int>();
KeyValuePair.Key = i*64;
KeyValuePair.Value = j*64;
PossibleCoords.Add(temp);
}
}
}
for(int i = 0; i < PossibleCoords.Count; i++)
{
SampleAdjacentPixelsToConfirm(PossibleCoords[i]);
}
为了取样,如果我追求高精度,我会检查红色与其他颜色的比例是否高。