到目前为止,我有这个:
using Images, Colors
a = Array{UInt8}(5, 5, 3)
imOutput = colorim(a)
如何为像素分配三个值:
imOutput[1,1] =
答案 0 :(得分:2)
我认为你的意思是(注意a
)
a = Array{UInt8}(3,5,5)
imOutput = colorim(a)
imOutput[1,1] = RGB(0,0,0)
imOutput
tests for Images.jl让我意识到了这一点。
答案 1 :(得分:1)
我不知道有data()
函数,我实际上是通过dump(imOutput)
找到解决方案:
Images.Image{FixedPointNumbers.UfixedBase{UInt8,8},3,Array{FixedPointNumbers.UfixedBase{UInt8,8},3}}
data: Array(FixedPointNumbers.UfixedBase{UInt8,8},(5,5,3)) 5x5x3 Array{FixedPointNumbers.UfixedBase{UInt8,8},3}:
[:, :, 1] =
0.314 0.498 0.337 0.0 0.102
0.584 0.0 0.549 0.565 0.498
0.337 0.0 0.102 0.212 0.0
0.549 0.816 0.498 0.906 0.0
0.102 0.584 0.0 0.545 0.188
[:, :, 2] =
0.588 0.0 0.0 0.0 0.0
0.337 0.0 0.0 0.0 0.0
0.549 0.0 0.0 0.0 0.0
0.102 0.0 0.0 0.0 0.0
0.498 0.0 0.0 0.0 0.0
[:, :, 3] =
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
properties: Dict{ASCIIString,Any} len 3
colorspace: ASCIIString "RGB"
colordim: Int64 3
spatialorder: Array(ASCIIString,(2,)) ASCIIString["y","x"]
输出显示您可以使用imOutput.data
来访问数据。
是的,这与data()
函数完全相同,请看一下line。
从输出中,我们可以看到imOutput
的颜色空间为RGB
,因此如果我们的颜色来自HSL
,我们应该将该颜色转换为RGB
空间在我们将这种颜色传递给imOutput.data
之前。例如,
a = convert(RGB, HSL(270, 0.5, 0.5))
imOutput.data[1,1,:] = [a.r, a.g, a.b]