我有一系列不同大小的图像。
x x x x
x x x x
x x x x
我想将这些转换为带有设定填充颜色的正方形,以保持纵横比。
x x x x
x x x x
x x x x
0 0 0 0
有没有办法在Juila中执行此操作,最好使用Images.jl包。
答案 0 :(得分:4)
假设您希望始终向上广播行数以使图像成方形,以下功能将为您提供所需的功能。
using Images, Colors
function square_up(image; value=RGB(0.,0.,0.))
A = data(image)
nrows, ncols = size(A)
fill_in_mat = fill(value, (ncols-nrows, ncols))
new_A = vcat(A, fill_in_mat)
new_image = copyproperties(image, new_A)
return new_image
end
以测试图像为例:
using TestImages
img = testimage("mandrill")
# Cut the bottom half out of the image
A = data(img)
println(size(A))
B = A[1:floor(size(A, 1)/2.),:]
B_image = copyproperties(img, B)
# Apply the function to get new image filled with `value`
# The default is to fill with RGB(0,0,0)
out_image = square_up(B_image)
# Check that its square
println(size(out_image, 1) == size(out_image, 2))
要设置填充颜色,只需弄乱value
参数。