赞
踩
对于python的安装从一开始就十分不顺利,在用什么版本和是否自带库上纠结。第一次先单独安装了Python2.7版本没有自带库,后面发现要下载并安装三方库麻烦复杂,于是就卸载了。之后又尝试安装了pythonxy,在导入pcv时也遇到了无法解决的报错。最后选择安装群里的Anaconda2,功能强大且有大量自带库。没想到装完后cmd测试也没有顺利通过,anaconda点开之后闪退,检查之后发现也不是环境变量的配置问题,以为是安装包的问题,又去镜像网站重新下。由于对这方面了解还不够,来来回回装卸好几次,最后才找到解决的办法。报错原因是因为Python在进行编码方式之间的转换时,会将 unicode 作为“中间编码”,但 unicode 最大只有128那么长,所以这里当尝试将 ascii 编码字符串转换成"中间编码" unicode 时由于超出了其范围,就报出了错误。解决方法是在位于python的安装路径下的Lib\mimetypes.py文件,在import下添加如下几行:
if sys.getdefaultencoding() != 'gbk':
reload(sys)
sys.setdefaultencoding('gbk')
保存再去cmd中测试,成功通过!说明ana安装完成了,最后下了Pycharm,在里面写代码十分方便。
因为绘制轮廓需要对每个坐标 [x, y] 的像素值施加同一个阈值,所以首先需要将图像灰度化:
convert():将图像转为灰度图像
hist():绘制灰度图像直方图。因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先用flatten()对图像进行压平处理。flatten() 方法可以将任意数组按照行优先准则转换成一维数组。
array() :将图像转换成NumPy的数组对象。NumPy中的数组对象是多维的,可以用来表示向量、矩阵和图像。通过对图像的数组进行直接操作,就可以完成很多图像处理。
im=Image.open(’…/data/empire.jpg’):读取图片
convert():用于不同模式图像之间的转换。PIL中有九种不同模式,分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。模式L为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:
L = R * 0.299 + G * 0.587+ B * 0.114
contourf()、contour():用来画等高线图。
图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用hist() 函数绘制: figure()
hist(im.flatten(),128)
show()
# encoding:utf-8
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
im = array(Image.open('D:/ZY.jpg').convert('L'))
figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。