您如何总结和平均一个序列? [英] How do you sum up and average a Sequence?

查看:55
本文介绍了您如何总结和平均一个序列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我在坐标(-1, 1)(0, 1)(1, 1)(-1, 0)(0, 0)(1, 0)(-1, -1)(0, -1)(1, -1)

let n = [1 .. -1 .. -1]
|> Seq.collect (fun j -> [-1 .. 1] |> Seq.map(fun i -> [i, j]))
n |> Seq.iter(printf "%A")

  1. 我正在尝试将x和y分别添加到序列中的每个元素
  2. 然后为序列中的每个元素获取Color p = GetPixel(x + i,y + j),对(x,y)的R,G,B求和并求平均值.
  3. 所以我们有9个红色,9个绿色,9个蓝色到Ave(红色),Ave(蓝色),Ave(绿色)

推荐答案

let offsets = seq { for i in -1 .. 1 do for j in -1 .. 1 do yield (i, j) }
let neighbourhood (x, y) = Seq.map (fun (i, j) -> (x + i, y + j)) offsets
let avgColours (cs : System.Drawing.Color seq) =
        let ((r, g, b), c) = cs |> Seq.fold (fun ((r, g, b), c) col -> ((r + int col.R, g + int col.G, b + int col.B), c + 1)) ((0, 0, 0), 0)
        System.Drawing.Color.FromArgb(r / c, g / c, b / c)

let avgNeighbours p = p |> neighbourhood |> Seq.map (fun (x, y) -> GetPixel(x, y)) |> avgColours

这篇关于您如何总结和平均一个序列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆