Julia:可视化以 csv 形式保存的图像
Julia: Visualize images saved in csv form
可视化以 .csv 格式保存的图像的最佳方式是什么?
以下无效:
using CSV, ImageView
data = CSV.read("myfile.csv");
imshow(data)
这是错误:
MethodError: no method matching pixelspacing(::DataFrames.DataFrame)
Closest candidates are:
pixelspacing(!Matched::MappedArrays.AbstractMultiMappedArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:63
pixelspacing(!Matched::MappedArrays.AbstractMappedArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:62
pixelspacing(!Matched::OffsetArrays.OffsetArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:67
...
Stacktrace:
[1] imshow(::Any, ::Reactive.Signal{GtkReactive.ZoomRegion{RoundingIntegers.RInt64}}, ::ImageView.SliceData, ::Any; name::Any, aspect::Any) at /Users/xxx/.julia/packages/ImageView/sCn9Q/src/ImageView.jl:269
[2] imshow(::Any; axes::Any, name::Any, aspect::Any) at /Users/xxx.julia/packages/ImageView/sCn9Q/src/ImageView.jl:260
[3] imshow(::Any) at /Users/xxx/.julia/packages/ImageView/sCn9Q/src/ImageView.jl:259
[4] top-level scope at In[5]:2
[5] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091
参考 github.
CSV 文件的列是否有 header 行名称,或者它只是一个充满文本数值的分隔文件?
如果 CSV 文件实际上是值矩阵的形式,这样值就是 2D 图像的字节,您可以使用 DelimitedFiles -- 参见 readdlm() docs。用readdlm()将文件读入矩阵,看ImageView能不能显示结果。
此问题已在 https://github.com/JuliaImages/ImageView.jl/issues/241 得到回答。在此处复制答案:
imshow(Matrix(data))
其中 data
是您的 DataFrame。但是 CSV 对于图像来说是一个糟糕的选择; Netbpm 如果您只是必须使用文本格式的图像,否则建议使用二进制格式。二进制 Netpbm 特别容易编写,如果您必须自己编写(例如,如果图像来自不支持其他文件格式的某种语言),否则 PNG 通常是一个不错的选择。
可视化以 .csv 格式保存的图像的最佳方式是什么?
以下无效:
using CSV, ImageView
data = CSV.read("myfile.csv");
imshow(data)
这是错误:
MethodError: no method matching pixelspacing(::DataFrames.DataFrame)
Closest candidates are:
pixelspacing(!Matched::MappedArrays.AbstractMultiMappedArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:63
pixelspacing(!Matched::MappedArrays.AbstractMappedArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:62
pixelspacing(!Matched::OffsetArrays.OffsetArray) at /Users/xxx/.julia/packages/ImageCore/yKxN6/src/traits.jl:67
...
Stacktrace:
[1] imshow(::Any, ::Reactive.Signal{GtkReactive.ZoomRegion{RoundingIntegers.RInt64}}, ::ImageView.SliceData, ::Any; name::Any, aspect::Any) at /Users/xxx/.julia/packages/ImageView/sCn9Q/src/ImageView.jl:269
[2] imshow(::Any; axes::Any, name::Any, aspect::Any) at /Users/xxx.julia/packages/ImageView/sCn9Q/src/ImageView.jl:260
[3] imshow(::Any) at /Users/xxx/.julia/packages/ImageView/sCn9Q/src/ImageView.jl:259
[4] top-level scope at In[5]:2
[5] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091
参考 github.
CSV 文件的列是否有 header 行名称,或者它只是一个充满文本数值的分隔文件?
如果 CSV 文件实际上是值矩阵的形式,这样值就是 2D 图像的字节,您可以使用 DelimitedFiles -- 参见 readdlm() docs。用readdlm()将文件读入矩阵,看ImageView能不能显示结果。
此问题已在 https://github.com/JuliaImages/ImageView.jl/issues/241 得到回答。在此处复制答案:
imshow(Matrix(data))
其中 data
是您的 DataFrame。但是 CSV 对于图像来说是一个糟糕的选择; Netbpm 如果您只是必须使用文本格式的图像,否则建议使用二进制格式。二进制 Netpbm 特别容易编写,如果您必须自己编写(例如,如果图像来自不支持其他文件格式的某种语言),否则 PNG 通常是一个不错的选择。