用python处理图片实现图像中的像素访问


Posted in Python onMay 04, 2018

前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。

python中利用numpy库和scipy库来进行各种数据操作和科学计算。我们可以通过pip来直接安装这两个库

pip install numpy
pip install scipy

以后,只要是在python中进行数字图像处理,我们都需要导入这些包:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

打开图像并转化为矩阵,并显示:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/lena.jpg')) #打开图像并转化为数字矩阵
plt.figure("dog")
plt.imshow(img)
plt.axis('off')
plt.show()

调用numpy中的array()函数就可以将PIL对象转换为数组对象。

查看图片信息,可用如下的方法:

print img.shape 
print img.dtype 
print img.size 
print type(img)

如果是RGB图片,那么转换为array之后,就变成了一个rows*cols*channels的三维矩阵,因此,我们可以使用img[i,j,k]来访问像素值。

例1:打开图片,并随机添加一些椒盐噪声

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/ex.jpg'))

#随机生成5000个椒盐
rows,cols,dims=img.shape
for i in range(5000):
  x=np.random.randint(0,rows)
  y=np.random.randint(0,cols)
  img[x,y,:]=255
  
plt.figure("beauty")
plt.imshow(img)
plt.axis('off')
plt.show()

用python处理图片实现图像中的像素访问

例2:将lena图像二值化,像素值大于128的变为1,否则变为0

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/pic/lena.jpg').convert('L'))

rows,cols=img.shape
for i in range(rows):
  for j in range(cols):
    if (img[i,j]<=128):
      img[i,j]=0
    else:
      img[i,j]=1
      
plt.figure("lena")
plt.imshow(img,cmap='gray')
plt.axis('off')
plt.show()

用python处理图片实现图像中的像素访问

如果要对多个像素点进行操作,可以使用数组切片方式访问。切片方式返回的是以指定间隔下标访问 该数组的像素值。下面是有关灰度图像的一些例子:

img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行
img[:,i] = 100 # 将第 i 列的所有数值设为 100
img[:100,:50].sum() # 计算前 100 行、前 50 列所有数值的和
img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列)
img[i].mean() # 第 i 行所有数值的平均值
img[:,-1] # 最后一列
img[-2,:] (or im[-2]) # 倒数第二行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python单链表简单实现代码
Apr 27 Python
Python实现随机选择元素功能
Sep 14 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Flask框架web开发之零基础入门
Dec 10 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
浅谈Python中对象是如何被调用的
Apr 06 Python
python pygame 开发五子棋双人对弈
May 02 Python
用python处理图片之打开\显示\保存图像的方法
May 04 #Python
Python 创建空的list,以及append用法讲解
May 04 #Python
浅谈python中字典append 到list 后值的改变问题
May 04 #Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 #Python
对python中的pop函数和append函数详解
May 04 #Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 #Python
对python append 与浅拷贝的实例讲解
May 04 #Python
You might like
Destoon模板制作简明教程
2014/06/20 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
php精度计算的问题解析
2019/06/21 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
什么是方法的重载
2013/06/24 面试题
优秀交警事迹材料
2014/01/26 职场文书
科研课题实施方案
2014/03/18 职场文书
《忆江南》教学反思
2014/04/07 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书