gpt4 book ai didi

arrays - 如何将RGB{N0f8}类型转换为Array{Float64}

转载 作者:行者123 更新时间:2023-12-03 08:00:48 24 4
gpt4 key购买 nike

我正在尝试将 Andrew Ng 类(class)中的基本神经网络应用程序从 Python 移植到 Julia,但陷入了这一部分。

我正在使用自己的数据集,因此我正在创建自己的解决方案来处理图像并调整图像大小。为了与Python代码中的完全相同(并且将所有图像作为一个矩阵中的向量),我需要将它们从RGB类型转换为数组类型,这样我就可以将它们存储为矩阵中的列,但我保留了一个错误我似乎无法在其他地方找到信息。

我目前正在使用所提出的想法的改编版本 here .

using Images, FileIO, TestImages

cat_path = "path/Cat/"
cat_imgs = joinpath.(cat_path, readdir(cat_path))

function process_image(path_vec::Vector{String}, h::Int64, w::Int64, label::Int64)
result = zeros((h*w), length(path_vec))
class = []
for i in enumerate(path_vec)
img = load(i[2])::Array{RGB{N0f8},2}
img = imresize(img,(h,w))::Array{RGB{N0f8},2}
img = vec(img)::Vector{RGB{N0f8}}
result[:,i[1]] = img # this is the line where I believe Im getting the error
push!(class, label)
end
return result, class
end

如果我尝试将图像从 RGB 更改为灰色,它会起作用(这是有道理的,因为它们只有一个 channel ,并且很容易变成一个数组),但如果我想将所有 channel 保留在向量中,我就不能只需将它们作为 Vector{RGB{N0f8}} 保存到矩阵中,如果我尝试使用 img = Convert(Array{Float64,1},img) 我收到错误:方法错误:无法 RGB{N0f8} 类型的对象转换为 Float64 类型的对象

我不确定如何使代码易于重现,但我相信如果您创建一个包含单个图像的文件夹并更新文件路径应该是可能的。或者只是使用测试图像运行函数内的各个行:

using TestImages
img = testimage("mandrill")

最佳答案

只需使用channelview。请注意,RGB 值将用作第一个维度。

julia> channelview(testimage("mandrill"))
3×512×512 reinterpret(reshape, N0f8, ::Array{RGB{N0f8},2}) with eltype N0f8:
[:, :, 1] =
0.643 0.471 0.388 … 0.475 0.494 0.035
0.588 0.49 0.29 0.58 0.663 0.043
0.278 0.243 0.122 0.608 0.659 0.047

;;; …

[:, :, 512] =
0.702 0.471 0.376 … 0.318 0.314 0.016
0.737 0.541 0.314 0.314 0.247 0.02
0.463 0.29 0.192 0.235 0.278 0.008

如果您想要不同的尺寸布局,可以将 permutedimschannelview 一起使用:

julia> permutedims(channelview(testimage("mandrill")),[2,3,1])
512×512×3 Array{N0f8,3} with eltype N0f8:
[:, :, 1] =
0.643 0.247 0.294 0.373 0.616 … 0.275 0.569 0.459 0.553 0.702
0.471 0.529 0.216 0.294 0.455 0.51 0.478 0.478 0.533 0.471
⋮ ⋱ ⋮

关于arrays - 如何将RGB{N0f8}类型转换为Array{Float64},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74274551/

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