python获取图片像素矩阵_用python处理图片实现图像中的像素访问

2023-05-16

这篇文章主要介绍了关于用python处理图片实现图像中的像素访问,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

前面的一些例子中,我们都是利用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()

例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()

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

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处理Excel xlrd的方法介绍

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python获取图片像素矩阵_用python处理图片实现图像中的像素访问 的相关文章

  • pytorch GPU的程序kill后未释放内存

    使用PyTorch设置多线程 xff08 threads xff09 进行数据读取 xff08 DataLoader xff09 xff0c 其实是假的多线程 xff0c 他是开了N个子进程 xff08 PID都连着 xff09 进行模拟多
  • 一个「学渣」从零Web前端自学之路

    从 13 年专科毕业开始 xff0c 一路跌跌撞撞走了很多弯路 xff0c 做过餐厅服务员 xff0c 进过工厂干过流水线 xff0c 做过客服 xff0c 干过电话销售可以说经历相当的 丰富 最后的机缘巧合下 xff0c 走上了前端开发之
  • 请求时token过期自动刷新token

    1 在开发过程中 xff0c 我们都会接触到token xff0c token的作用是什么呢 xff1f 主要的作用就是为了安全 xff0c 用户登陆时 xff0c 服务器会随机生成一个有时效性的token 用户的每一次请求都需要携带上to
  • Lua Table 长度的计算

    计算 Lua 的 Table长度 在 Lua 中 xff0c 我们可以通过这个符号 来计算字符串的长度和一个table的长度 xff0c 比如 xff1a str 61 34 I 39 am a string 34 print str 61
  • Mybatis-Plus 之BaseMapper 方法详解

    为什么80 的码农都做不了架构师 xff1f gt gt gt Mapper 继承该接口后 xff0c 无需编写 mapper xml 文件 xff0c 即可获得CRUD功能 这个 Mapper 支持 id 泛型 64 author hub
  • mac上面查看路由表

    为什么80 的码农都做不了架构师 xff1f gt gt gt 问题 本来想使用linux上面的命令route n查看mac上面的路由表的 xff0c 结果显示mac上面的route命令不是这样玩的 解决 netstat nr Mac上面需
  • el-select使用方法及遇到数据回显的坑

    2019独角兽企业重金招聘Python工程师标准 gt gt gt lt el select v model 61 34 temp lang 34 class 61 34 filter item 34 placeholder 61 34 P
  • 中国电话号码格式

    中国区号 086 北京区号010 我的电话123456 填在表格上应该如何填写呢 xff1f 手机号码应该如何填写呢 xff1f xff1f 00就不必写了 xff0c 写 43 就好了 xff0c 不同的国家国际接入的号不太一样的 xff
  • 【Quick-Cocos2d-x笔记】【一】Mac环境及相关配置

    本来是老老实实的想 xff0c 一心一意的先把C 43 43 学好 xff0c 在觉得自己C 43 43 水平还是菜鸟级的时候不要去动其他的东西 但自上次面试回来时候 xff0c 觉得这样不行啊 xff0c 虽然说现在从事的是C 43 43
  • matlab练习程序(粒子群优化PSO)

    算法没有和图像处理直接相关 xff0c 不过对于图像分类中的模式识别相关算法 xff0c 也许会用到这个优化算法 算法步骤 xff1a 1 首先确定粒子个数与迭代次数 2 对每个粒子随机初始化位置与速度 3 采用如下公式更新每个粒子的位置与
  • 您需要来自administrators的权限才能对此文件进行更改

    今天我重装了系统 xff0c 以前D盘里的一个文件夹想删除 xff0c 可以一直没法删除 xff0c 原先它提示 您需要来自 S 1 5 21 602162358 1284227242 682003330 500 的权限才能对此文件夹 xf
  • ***JAVA多线程的应用场景和应用目的举例

    多线程使用的主要目的在于 xff1a 1 吞吐量 xff1a 你做WEB xff0c 容器帮你做了多线程 xff0c 但是他只能帮你做请求层面的 简单的说 xff0c 可能就是一个请求一个线程 或多个请求一个线程 如果是单线程 xff0c
  • Kafka遇到30042ms has passed since batch creation plus linger time at org.apache.kafka.clients.producer...

    问题描述 xff1a 运行生产者线程的时候显示如下错误信息 xff1a Expiring 1 record s for XXX 0 30042 ms has passed since batch creation plus linger t
  • tcpdump -w 和 -r 的使用

    tcpdump的说明文档是这样的 xff1a w 将原始的信息包写入 形式如 tcpdump w tmp result txt 我今天试了一下 xff0c 发现其写成的文件如果用cat vim来查看的话 xff0c 都显示为乱码 经过man
  • 如何用Go访问深层嵌套的JSON数据?

    原文来自https hashnode com post how 大多数情况下 xff0c 开发人员需要使用来自其他服务的JSON数据并对其进行查询 查询JSON文档非常耗时 在过去的几天里 xff0c 我正在为Golang编写一个包 xff
  • Identity Card

    Identity Card Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 995 Accepted
  • 华为S5700交换机开启WEB配置

    近来很多朋友问关于S5700开启WEB不成功的问题 xff0c 现整理出具体步骤和命令 提示 xff1a 华为交换机配置时 xff0c 输入命令前几个字母 xff0c 按TAB可以自动补全命令 xff0c 比如在系统视图下输入sh按下TAB
  • 托管堆上对象的大小(Size)和Layout

    前几天 xff0c 我介绍了托管环境下struct实例的Layout和Size xff0c 其中介绍了StructLayoutAttribute特性 xff0c 其实StructLayoutAttribute特性不只可以用在struct上
  • 网上十大黑客软件大曝光

    网上十大黑客软件大曝光 Internet网上的黑客网站多如牛毛 xff0c 黑客软件也越来越多 越来越黑 笔者现将这些黑客软件分门别类地曝一曝光 xff0c 并提出相应的解决方案 xff0c 以防患于未然 一 古老的WinNuke 平台 x
  • C# DataSet和DataTable详解[转]

    1 创建DataSet对象 xff1a DataSet ds 61 new DataSet 34 DataSetName 34 2 查看调用SqlDataAdapter Fill创建的结构 da Fill ds 34 Orders 34 D

随机推荐

  • 【Python】爬取网站图片

    import requests import bs4 import urllib request import urllib import os hdr 61 39 User Agent 39 39 Mozilla 5 0 X11 Linu
  • 纯C++实现的HTTP请求(POST/GET)

    纯C 43 43 实现的HTTP请求 xff08 POST GET xff09 xff0c 支持windows和linux xff0c 进行简单的封装 xff0c 方便调用 实现如下 xff1a include 34 HttpConnect
  • python subprocess执行shell命令

    2019独角兽企业重金招聘Python工程师标准 gt gt gt subprocess的目的就是启动一个新的进程并且与之通信 subprocess模块中只定义了一个类 Popen 可以使用Popen来创建进程 xff0c 并与进程进行复杂
  • HDTV片源

    微软的 点击进入 苹果 quicktime下载 点击进入 国内一个网站 不过收费 电击进入 还有思路 转载于 https blog 51cto com wangjian 1420
  • Onvif鉴权实现方式

    Onvif鉴权实现方式 Digest 61 B64ENCODE SHA1 B64DECODE Nonce 43 Date 43 Password gsoap中digest生成代码 xff1a int soap wsse add Userna
  • 一文搞定Java并发编程面试考点

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 在java中守护线程和本地线程区别 xff1f java中的线程分为两种 xff1a 守护线程 xff08 Daemon xff09 和用户线程 xff08 User
  • 数据结构c语言版创建链表实验报告,C语言数据结构-创建链表的四种方法

    结点类型 xff1a typedef int datatype typedef struct NODE datatype data struct NODE next Node LinkList 1 不带头结点的头插入法创建链表 每创建一个结
  • syslog-ng

    syslog ng配置 March 13th 2012 绚丽也尘埃 Leave a comment Go to comments syslog ng的配置非常简单直观 xff0c 于是乎配置好看看怎么用它实时收集日志 有两台服务器 xff0
  • CMAKE总结(1) .lib .dll .a .so libx.dll libx.dll.a

    2019独角兽企业重金招聘Python工程师标准 gt gt gt win 对应 linux lib a dll 注 so 注 xff1a win中若使用 dll需要一个附带的引入库 lib win gcc中若使用 dll需要一个附带的因入
  • curl命令详解

    cURL 1 手册页 名称 cURL transfer a URL 摘要 cURL 选项 URL 描述 cURL 是一个向服务器或从服务器传输数据的工具 xff0c 它支持HTTP HTTPS FTP FTPS SCP SFTP TFTP
  • curl命令常见用法汇总 good

    curl是一种命令行工具 xff0c 作用是发出网络请求 xff0c 然后得到和提取数据 xff0c 显示在 34 标准输出 34 xff08 stdout xff09 上面 curl是一个强大的命令行工具 xff0c 它可以通过网络将信息
  • Linux编程之select

    select系统调用的的用途是 xff1a 在一段指定的时间内 xff0c 监听用户感兴趣的文件描述符上可读 可写和异常等事件 select 机制的优势 为什么会出现select模型 xff1f 先看一下下面的这句代码 xff1a int
  • DIGEST认证

    为了弥补BASIC认证存在的弱点 xff0c 从HTTP 1 1起就有了DIGEST认证 DIGEST认证同样使用质询 响应的方式 xff08 challenge response xff09 但不会像BASIC认证那样直接发送明文密码 所
  • Linux下搭建一个简单的UDP通信

    基础知识 UDP和TCP的区别 xff1a 1 TCP是面向连接的 xff0c 而UDP是非面向连接的 xff0c 因此TCP更可靠 2 UDP的server端的socket不需要监听 3 二者的server端都需要绑定 代码实现 xff1
  • 四轴飞行器PID调试一周总结

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Arduino 43 XXD 电调 43 1000KV电机 使用PID来调节稳定性 xff0c 今天上午终于调节 x y轴稳定 回想遇到的问题 xff0c 真的是试出来的值
  • 服务器机柜组件是,网络型机柜与服务器型机柜有什么区别

    导读 随着计算机与网络技术的发展 xff0c 服务器以及网络通信设备等IT设备正在向小型化 网络化 机架化的方向发展 xff0c 那么机房对于机柜管理的需求也就日益增长了 那么 xff0c 你们可知网络型机柜与服务器型机柜有什么区别吗 xf
  • live2d模型_使用二次元模型动画人物让自己网站“骚起来”

    预览 直接使用 xff0c 不想将模型或者js文件放到自己的CDN xff0c 则直接按照下面的步骤 下面的地址是我自己的github地址仓库 xff0c 文件一般不会删除 xff0c 直接引入链接即可 node项目 安装需要的js npm
  • 【http】发送POST请求小例子

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 一 HTTP是什么 xff1f 二 使用步骤 一 HTTP是什么 xff1f 请求行 xff08 request line xf
  • python多线程爬取某网站全部h漫画_Python多线程爬虫爬取网页图片

    39 39 39 基于多页面多线程 39 39 39 import os 引入文件模块 import re 正则表达式 importurllib requestimportthreading 连接网页并返回源码 defopen url ur
  • python获取图片像素矩阵_用python处理图片实现图像中的像素访问

    这篇文章主要介绍了关于用python处理图片实现图像中的像素访问 xff0c 有着一定的参考价值 xff0c 现在分享给大家 xff0c 有需要的朋友可以参考一下 前面的一些例子中 xff0c 我们都是利用Image open 来打开一幅图