我正在尝试使用带有ImageSegmentation.jl的模糊C均值聚类来聚类图像的不同区域
using ImageSegmentation, Images
fl = load("flower.jpg")
fuzzy_fl = fuzzy_cmeans(fl,3,2)
它给出了这样的错误:
MethodError: no method matching fuzzy_cmeans(::Base.ReshapedArray{Float64,2,ImageCore.ChannelView{Float64,3,Array{ColorTypes.RGB4{Float64},2}},Tuple{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64}}})
Closest candidates are:
fuzzy_cmeans(::Array{T<:Real,2}, ::Int64, ::Real; maxiter, tol, dist_metric, display) where T<:Real at /Users/asharma19/.julia/v0.6/Clustering/src/fuzzycmeans.jl:58
fuzzy_cmeans(::AbstractArray{T<:ColorTypes.Colorant,N}, ::Any...; kwargs...) where {T<:ColorTypes.Colorant, N} at /Users/asharma19/.julia/v0.6/ImageSegmentation/src/clustering.jl:12
1)我应该如何将图像输入此功能? 2)此外,如果它工作正常,因为该函数不返回SegmentedImage数组,那么在此之后我应该如何显示分段/聚簇图像?
答案 0 :(得分:0)
代码对我来说很好。在将图像输入fuzzy_cmeans
函数之前,您可能正在处理操作它的图像(例如视图,转置)。与您发布的代码示例不同的东西。
答案 1 :(得分:0)
函数fuzzy_cmeans
不接受Array{ColorTypes.RGB4{FixedPointNumbers.Normed{UInt8,8}},2}
。
图像需要Array{ColorTypes.RGB{FixedPointNumbers.Normed{UInt8,8}},2}
才能在函数中输入。
虽然,它不应该发生,因为函数的参数类型是Colorant{T,N}
,它是AbstractRGB{T}
的父类。
图像通常是RGB4(涉及一些填充),因此您需要在使用前进行转换。 (可以使用julia的convert
功能)