gpt4 book ai didi

floating-point - 从 Julia 中的像素检索 RGB 矢量

转载 作者:行者123 更新时间:2023-12-03 23:40:10 24 4
gpt4 key购买 nike

我很难弄清楚如何在 Julia 中检索像素的 RGB 向量的分量。例如,如果我有一张图片,我会调用 image然后我选择一个像素,比如 image[230, 1566] ,那么如果我想要 RGB 向量的绿色分量,我倾向于做 RGB(image[230, 1566]).g .然而,这样的事情会返回一个像 0.778N0f8 这样的字符串。 .我知道这意味着“用 8 个小数位标准化”,但这不是我想要的。我只是想要实际的浮点数作为一个数字,这样我就可以对它执行其他操作。知道如何解决这个问题吗?提前致谢!

最佳答案

为了更好地理解发生了什么,让我们考虑一个像素:

julia> using Colors

julia> pixel = colorant"purple"
RGB{N0f8}(0.502,0.0,0.502)
我们可以看到 RGB type 默认使用类型 N0f8来存储它的值。让我们看看里面。
julia> dump(pixel)
RGB{FixedPointNumbers.N0f8}
r: FixedPointNumbers.N0f8
i: UInt8 0x80
g: FixedPointNumbers.N0f8
i: UInt8 0x00
b: FixedPointNumbers.N0f8
i: UInt8 0x80
你可以看到,在内部,实际上,一个像素包含一组 3 个无符号 8 位整数,名为 r , g , bi 中保持其值(value) field 。
然而,访问这些值的正确方法是通过 red , green , blue方法而不是字段:
julia> dump(red(pixel))
FixedPointNumbers.N0f8
i: UInt8 0x80
如果你想得到浮点值,你可以做 float(red(pixel))) :
julia> dump(float(red(pixel)))
Float32 0.5019608f0
但是请注意,现在返回的值比原始数据大 4 倍(32 位而不是 8 位)。
如果您想获取原始数据(8 位),您可以执行以下操作:
julia> reinterpret(red(pixel))
0x80
希望这一切都清除了。

关于floating-point - 从 Julia 中的像素检索 RGB 矢量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66246615/

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