【发布时间】:2017-01-06 01:39:34
【问题描述】:
我需要读取图像,对其进行一些操作,然后再次将其另存为图像。为此,我在 julia 中找到了出色的 Images.jl 包。我能够读取图像,将其转换为浮点数组,然后对其进行操作(裁剪图像并更改图像上的一些值)。但是,我找不到将其存储为 jpg 的方法。再次归档。这是我用来操作数据的过程。对于下面的代码,假设我在同一目录中有一个 dog.jpg 文件。
Using Images,Colors
averageImage = zeros(1,1,3)
averageImage[1,1,:] = [123.68 116.779 103.779]
function data(img, averageImage)
a0 = load(img)
new_size = ntuple(i->div(size(a0,i)*224,minimum(size(a0))),2)
a1 = Images.imresize(a0, new_size)
i1 = div(size(a1,1)-224,2)
j1 = div(size(a1,2)-224,2)
b1 = a1[i1+1:i1+224,j1+1:j1+224]
c1 = separate(b1)
d1 = convert(Array{Float32}, c1)
e1 = reshape(d1[:,:,1:3], (224,224,3,1))
f1 = (255 * e1 .- averageImage)
g1 = permutedims(f1, [2,1,3,4])
g1 = g1[:,:,:]
# here type of g1 is : Array{Float64,3}
end
A = data("dog.jpg",averageImage)
在这里,我能够得到 A。现在,我需要将该 A 数组保存为图像。 为此,我尝试以下方法:
save("modified_dog.jpg",A)
我收到以下错误:
错误:ArgumentError: FixedPointNumbers.UFixed{UInt8,8} 是 8 位 表示从 0.0 到 1.0 的 256 个值的类型;不能代表-79.68
不幸的是,我不知道如何进行转换。
有没有人帮我保存提到的 A 数组?提前致谢。
【问题讨论】:
-
如错误所示,图像采用 [0,1] 中的浮点值,而不是 [0,255] 范围内的值。如果您将代码调整为该效果,它应该可以工作。
标签: julia