用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实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
Python编写登陆接口的方法
Jul 10 Python
Python3 Random模块代码详解
Dec 04 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python学生信息管理系统修改版
Mar 13 Python
python数字图像处理实现直方图与均衡化
May 04 Python
解决python3 json数据包含中文的读写问题
May 10 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
python数值基础知识浅析
Nov 19 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
python之np.argmax()及对axis=0或者1的理解
Jun 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
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php文件操作相关类实例
2015/06/18 PHP
orm获取关联表里的属性值
2016/04/17 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
爷爷追悼会答谢词
2014/01/24 职场文书
运动会口号8字
2014/06/07 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
幼师大班个人总结
2015/02/13 职场文书