小编Dak*_*kaa的帖子

位图图像处理

我想使用 LockBits 方法替换 GetPixel 和 SetPixel,所以我遇到了这个F# 延迟像素读取

open System.Drawing
open System.Drawing.Imaging

let pixels (image:Bitmap) =
    let Width = image.Width
    let Height = image.Height
    let rect = new Rectangle(0,0,Width,Height)

    // Lock the image for access
    let data = image.LockBits(rect, ImageLockMode.ReadOnly, image.PixelFormat)

    // Copy the data
    let ptr = data.Scan0
    let stride = data.Stride
    let bytes = stride * data.Height
    let values : byte[] = Array.zeroCreate bytes
    System.Runtime.InteropServices.Marshal.Copy(ptr,values,0,bytes)

    // Unlock the image
    image.UnlockBits(data)

    let pixelSize = 4 // <-- calculate this …
Run Code Online (Sandbox Code Playgroud)

f# f#-interactive f#-3.0

4
推荐指数
1
解决办法
1940
查看次数

F#如何循环从-1到1或1到-1?

我想要一些像j = 1 .. j = -1和i = -1 .. i = 1的东西,我知道Java/C#的做法,但不是F#.

   for j in 1 .. -1 do
    for i in -1 .. 1 do
      //all 9 combination.
Run Code Online (Sandbox Code Playgroud)

请指导,谢谢.

f#

3
推荐指数
2
解决办法
118
查看次数

如何将3元组的序列相加?并计算他们的平均值?

我有一系列像这样的3元组:

[(123, 143 ,136), (177, 284, 248), (143, 182, 252)...]
Run Code Online (Sandbox Code Playgroud)

我想通过总结所有3元组来将它们分成单个3元组:

[((x1+x2+x3),(y1+y2+y3),(z1+z2+z3))]
Run Code Online (Sandbox Code Playgroud)

然后找到他们的平均值

[((x1+x2+x3)/n,(y1+y2+y3)/n,(z1+z2+z3)/n)]
Run Code Online (Sandbox Code Playgroud)

我总结他们的尝试:

let averageRGB seqRGB = seqRGB |> Seq.fold(fun(R, G, B)(r, g, b) -> (R+r, G+g, B+b)) (0, 0, 0) (r, g, b)
Run Code Online (Sandbox Code Playgroud)

我试过用:

你如何总结和平均序列?

3元组列表的第一个元素的总和

http://social.msdn.microsoft.com/Forums/vstudio/en-US/776d6f05-40c9-43ac-9b1c-eab188466eed/f-how-to-use-foldback-for-array-of-tuples?forum= fsharpgeneral

f# f#-interactive

0
推荐指数
1
解决办法
1445
查看次数

标签 统计

f# ×3

f#-interactive ×2

f#-3.0 ×1