【发布时间】:2014-03-05 16:04:48
【问题描述】:
我有三个列表,每个列表仅代表与三个图像的像素值相关的 0 和 1。 我的问题是如何获得这三个列表的总和(平均值)并在新列表中表示它? 这是我的 image1 的示例:
List<int> image1 = new List<int>();
int blackColor = 0;
for (int x = 0; x < bmp1.Width; x++)
{
for (int y = 0; y < bmp1.Height; y++)
{
Color color = bmp1.GetPixel(x, y);
if (color.ToArgb() == Color.Black.ToArgb())
{
image1.Add(0);
blackColor++;
}
else
{
image1.Add(1);
}
}
}
【问题讨论】:
-
你会想看看 SelectMany
-
你能给我一些资源或例子吗?
-
Grant Winney;不,基本上我需要做的是获取所有零元素(列表的零元素)的平均值并将其放入新列表中,因此对于所有所有三个列表的元素。
-
SelectMany 将列表扁平化为一个列表。从那里你只需调用它们的平均值(linq)。这是关于 SelectMany 的帖子:dotnetperls.com/selectmany
-
(切线相关:您可能会发现在循环中使用 GetPixel() 对于大图像来说太慢了。如果是这样,请考虑使用 Bitmap.LockBits())