python如何调用图片-用python简单处理图片(4):图像中的像素访问
前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。
python中利用numpy库和scipy库来进行各种数据操作和科学计算。我们可以通过pip来直接安装这两个库
pip install numpy
pip install scipy
以后,只要是在python中进行数字图像处理,我们都需要导入这些包:
from PIL importImageimportnumpy as npimport matplotlib.pyplot as plt
打开图像并转化为矩阵,并显示:
from PIL importImageimportnumpy as npimportmatplotlib.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对象转换为数组对象。
查看图片信息,可用如下的方法:
printimg.shapeprintimg.dtypeprintimg.sizeprint type(img)
如果是RGB图片,那么转换为array之后,就变成了一个rows*cols*channels的三维矩阵,因此,我们可以使用
img[i,j,k]
来访问像素值。
例1:打开图片,并随机添加一些椒盐噪声
from PIL importImageimportnumpy as npimportmatplotlib.pyplot as plt
img=np.array(Image.open('d:/ex.jpg'))#随机生成5000个椒盐
rows,cols,dims=img.shapefor i in range(5000):
x=np.random.randint(0,rows)
y=np.random.randint(0,cols)
img[x,y,:]=255plt.figure("beauty")
plt.imshow(img)
plt.axis('off')
plt.show()
例2:将lena图像二值化,像素值大于128的变为1,否则变为0
from PIL importImageimportnumpy as npimportmatplotlib.pyplot as plt
img=np.array(Image.open('d:/pic/lena.jpg').convert('L'))
rows,cols=img.shapefor i inrange(rows):for j inrange(cols):if (img[i,j]<=128):
img[i,j]=0else:
img[i,j]=1plt.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如何调用图片-用python简单处理图片(4):图像中的像素访问相关推荐
- python获取图片像素矩阵_用python处理图片实现图像中的像素访问
这篇文章主要介绍了关于用python处理图片实现图像中的像素访问,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然 ...
- python像素大于_用python处理图片实现图像中的像素访问
前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...
- python像素处理_用python处理图片实现图像中的像素访问
前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...
- python找出在原图中的位置_用python简单处理图片(4):图像中的像素访问
前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...
- 用python简单处理图片(4):图像中的像素访问
前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...
- python使用matplotlib可视化折线图、在可视化图像中同时绘制多条折线图
python使用matplotlib可视化折线图.在可视化图像中同时绘制多条折线图 目录 python使用matplotlib可视化折线图.在可视化图像中同时绘制多条折线图
- 一种移动端简单的检测图像中身份证(银行卡)的方式
一种简单的检测图像中身份证(银行卡)的方式 客户端检测身份证.银行卡之类的功能应该是很常见的,一般都是采用集成第三方OCR sdk来完成信息的采集.但是如何只是初步识别相机镜头中到底包不包含身份证,然 ...
- python如何调用图片-python调用图片
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...
- python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化
在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...
最新文章
- .NET中小数,浮点数和双精度之间的区别?
- 分布式缓存的面试题8
- LSMW批处理使用方法(07)_步骤6、7
- Http、Socket、WebSocket之间联系与区别
- .NET 2.0 RC的一个Bug
- STL中sort算法简析
- anaconda moviepy_Anaconda和PyCharm的详细安装步骤~小白专用,手把手教学
- 帧间差分法_OpenCV_详解
- php5.3.3php5.4如何支持zend,php5.3不支持ZendOptimizer的解决办法(Zend Guard Loader)
- SQL Server整合–在单个SQL Server实例上托管多个数据库
- 【金融工程实验】【matlab】使用candle函数画日均k线图
- maven项目转换成dynamic项目
- es6 模板字变量和字符串占位符
- 洛谷OJ P1003 铺地摊
- 饿了么移动 APP 的架构演进
- HTML + CSS + JavaScript 两小时快速入门教程
- 降采样滤波器 matlab,降采样FIR滤波器的设计与硬件实现
- 减员云售前可降本增效
- 复制网站zencart模板的方法
- 大数据营销咨询公司AIO获数百万美元天使轮融资
热门文章
- mac mysql 5.7.9安装教程_mac系统OS X10.10版本安装最新5.7.9mysql的方法_MySQL
- 安卓最好用的浏览器_iOS最好用的浏览器,没有之一!
- wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
- latex hyperref_LaTeX 使用心得
- 安装android studio出现choose an account with administrator
- 安全 日志挖掘 分析系统数据源
- base64 长度补全
- python3 aes 解密
- 洛谷P2679 子串
- PHP strlen()函数和strpos()函数