用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 相关文章推荐
机器学习经典算法-logistic回归代码详解
Dec 22 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
python科学计算之narray对象用法
Nov 25 Python
python小白切忌乱用表达式
May 29 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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
PHP新手上路(十)
2006/10/09 PHP
PHP编码规范-php coding standard
2007/03/16 PHP
php多文件上传实现代码
2014/02/20 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
解决layUI的页面显示不全的问题
2019/09/20 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python实时分析日志的一个小脚本分享
2017/05/07 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
python实现排序算法解析
2018/09/08 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python 消费 kafka 数据教程
2019/12/21 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python实现3D地图可视化
2020/03/25 Python
幼儿如何来做好自我评价
2013/11/05 职场文书
留学推荐信写作指南
2014/01/25 职场文书
《春雨》教学反思
2014/04/24 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
西柏坡观后感
2015/06/08 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
Python实现拼音转换
2021/06/07 Python
python对文档中元素删除,替换操作
2022/04/02 Python