我需要讀取圖像,稍微操作它,然後再次將其保存爲圖像。爲此,我在茱莉亞找到了優秀的Images.jl包。我能夠讀取圖像,將其轉換爲浮點數組,然後對其進行處理(裁剪圖像並更改圖像上的某些值)。但是,我無法找到將其存儲爲jpg的方式。再次文件。以下是我應用於操作數據的過程。對於下面的代碼,我們假設我在同一個目錄中有一個dog.jpg文件。如何使用Images.jl將圖像寫入浮動數組中作爲圖像
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.現在,我需要將該數組保存爲圖像。 要到這一點,我嘗試以下方法:
save("modified_dog.jpg",A)
我得到了以下錯誤:
ERROR: ArgumentError: FixedPointNumbers.UFixed{UInt8,8} is an 8-bit type representing 256 values from 0.0 to 1.0; cannot represent -79.68
可惜的是,我不知道這樣做轉換。
有沒有人可以幫我保存提到的數組?提前致謝。
由於錯誤指示,圖像將在[0,1]中獲取浮點值,而不是範圍[0,255]中的值。如果您爲此調整代碼,它應該可以工作。 – StefanKarpinski