julia图像处理

julia简介与安装

julia和python一样是一门动态编程语言,不过据说有媲美C的速度,而且在数据科学领域很吃得开,这谁能顶得住啊,所以果断体验一波。
首先下载安装包:http://julialang.org/
然后将julia的安装路径下的\bin目录添加到系统的环境变量中,然后就可以通过cmd或者命令提示符进入julia的编译环境了。
在这里插入图片描述不过如果想做图像处理的话,还需要手动添加几个包,在命令行中直接输入]即可进入pkg模式,在pkg模式下按退格键可以回到perl模式。
在pkg模式下通过add命令可以直接安装我们需要的包,像pip一样。于是我们输入

add Images
add ImageView

网速并不是很快,而且似乎需要科学上网,趁着这个功夫可以浏览一下官方文档。
https://juliaimages.org/latest/
安装之后按删除键回到perl模式,输入

using Images, ImageView

当然中途会报错,但是会友好地提示你Package XXX not found ……,然后我们再回到pkg模式add一下就可以了,直到不报错为止。

julia图像处理的基本命令

读取图片和显示图片的方式与matlab、pillow什么的都很相似,而且julia还能下载网络上的图片。

julia > using Images, ImageView
julia > img =load("E:\\00\\test.jpg")
julia > imshow(img);
julia > url = "https://img-blog.csdnimg.cn/20181228134145196.jpg"
julia > path = download(url,"sand.jpg");
julia > img = load(path);
julia > imshow(img)

结果就酱婶儿的。
在这里插入图片描述

代码结尾如果不输入的话就会像matlab一样对值进行输出,我们可以通过typeof不是python的type)函数获取变量的类型。可见这实际上是RGB数组,可以通过Gray函数将其转换成更友好的灰度图。
转换成灰度图之后觉得不过瘾还可以对其二值化,操作逻辑与matlab类似,即令大于阈值的点为true,小于阈值的店为false。但是julia中布尔型似乎不能表示图片,所以需要乘以一个浮点型的数将其转换为浮点型数组。

julia> typeof(img)
	Array{RGB{Normed{UInt8,8}},2}
julia> imgGray = Gray.(img);
julia> typeof(imgGray)
	Array{Gray{Normed{UInt8,8}},2}
julia> imgTh = 1.0 * (imgGray.>0.5);
julia> typeof(imgTh)
	Array{Float64,2}

在juila中对图片进行像素点操作与matlab相似,但julia数组是通过方括号[]进行引用的,操作方法如下

julia> imgFloat = float(imgGray);
julia> imgFloat[100,100]
	1.0

既然可以对单像素进行操作,也就意味着我们可以愉快地求质心了,这里需要说明一下在julia中,for循环体相当于一个独立的作用域,如果想在循环体中改变先前定义好的变量的值,需要将该变量作为全局变量来处理。

#test.jl
using Images, ImageView
img = load("E:\\00\\sandS.jpg");
img = float(Gray.(img));
x = 0;
y = 0;
sumImg = 0;
m,n = size(img)
for i = 1:m
        for j in 1:n
                global y += img[i,j]*i;
                global x += img[i,j]*j;
                global sumImg += img[i,j];
        end
end
x = x/sumImg;
y = y/sumImg;
print(x)
print(y)

然后在命令行中调用,得出结果

E:\00>julia test.jl
294.51644169989555
151.90352508196105

猜你喜欢

转载自blog.csdn.net/m0_37816922/article/details/85335622