当前位置:   article > 正文

Python——基本图像操作和处理_pycharm对图像的处理

pycharm对图像的处理

一、安装及环境配置

对于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')
  • 1
  • 2
  • 3

保存再去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&
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/950121
推荐阅读
相关标签
  

闽ICP备14008679号