用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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
python实现旋转和水平翻转的方法
Oct 25 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
Python使用贪婪算法解决问题
Oct 22 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python requests用法和django后台处理详解
Mar 19 Python
Python 绘制多因子柱状图
May 11 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
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python集合是否可变总结
2019/06/20 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
Python属性和内建属性实例解析
2020/01/14 Python
python实现二分查找算法
2020/09/18 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
《手指教学》反思
2014/02/14 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
公司年终奖分配方案
2014/06/16 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
群众路线专项整治方案
2014/10/27 职场文书
实习证明模板
2015/06/16 职场文书
中秋节祝酒词
2015/08/12 职场文书
2016开学第一课心得体会
2016/01/23 职场文书