用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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python常用知识点汇总
May 08 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python使用pycharm环境调用opencv库
Feb 11 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
python生成大写32位uuid代码
Mar 03 Python
python简单的三元一次方程求解实例
Apr 02 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
Python实现播放和录制声音的功能
Aug 12 Python
Django基础CBV装饰器和中间件
Mar 22 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实现网站插件机制的方法
2009/11/10 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
js 深拷贝函数
2008/12/04 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python+flask实现API的方法
2018/11/21 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
新护士岗前培训制度
2014/02/02 职场文书
《日月潭》教学反思
2014/02/28 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server