Python——基本图像操作和处理

一、安装及环境配置

对于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,在里面写代码十分方便。

二、使用Pycharm进行基础图像处理

1.图像轮廓和直方图

1.1基本原理

因为绘制轮廓需要对每个坐标 [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()

1.2代码实现

# 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')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值