博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【从零开始学python图像处理】02-关于numpy数组
阅读量:3926 次
发布时间:2019-05-23

本文共 1185 字,大约阅读时间需要 3 分钟。

关于Numpy

对图像处理来说,numpy数组是非常重要的。图像由像素值网格构成,numpy数组更像列表,更适合用于科学计算。

为什么需要numpy进行图像处理

当我们想将图像的亮度提升2倍,直接对列表进行乘法计算。

a = [1,2,3,4,5]b = 2*aprint(b)

结果如下。这个结果并不是我们想看到的,它仅仅是将同一列表进行两次连接。这也是为什么我们需要用的numpy数组进行图像计算。

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
  • 在numpy中进行相同的操作
import numpy as npc = np.array(a) #将列表转换为numpy数组d = 2*cprint(d)
[ 2  4  6  8 10]

numpy的其他操作

例如,numpy数组相加,但注意进行相加时,数组的维数应该是一致的。即当进行图像相加时,最好保证两幅图像的阵列尺寸是一致的。

a = np.array([1,2,3,4,5])b = np.array([6,7,8])c = np.array([9,10,11,12,13])print(a+b) # not possible as the dimensions are different

结果如下。

Traceback (most recent call last):  File "
", line 1, in
print(a+b)ValueError: operands could not be broadcast together with shapes (5,) (3,)
print(a+c) #possible
[10 12 14 16 18]

图像处理中,numpy数据的类型

在图像处理中,常将numpy数据的类型设为float64。举个例子,如果你要对你的图像某一像素值进行除以2操作,该像素值为11,那么结果为5,出现舍入错误,而设为float类型,得到正确数据。当你不确定你的结果时,将数据类型设为float,避免输出结果错误。

图像处理中的numpy运用

  • 创建和待处理图像大小相同的numpy数组
from skimage import ioimg1 = io.imread('C:/Users/stacey/Pictures/lena.png')print(type(img1))a = np.ones_like(img1)
  • 从图像中获取较小的区域
b = a[:2] #通过切片
  • 得到每行、列的总值
column_sum = np.sum(a,axis=0) # 得到每一列的总值row_sum = np.sum(a,axis=1) #得到每一行的总值
  • 获得数组的转置
transposed = a.T

转载地址:http://lqugn.baihongyu.com/

你可能感兴趣的文章
oracle命令2015
查看>>
CacheConcurrencyStrategy 五种缓存方式 (实体类添加)
查看>>
灵活控制 Hibernate 的日志或 SQL 输出,以便于诊断 log4j
查看>>
Spring Security 3 用户信息的问题
查看>>
SpringMVC 过滤器Filter使用解析
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
send email Java发送邮件
查看>>
Java mail 邮箱发送
查看>>
spring有三种启动方式
查看>>
大型电子商务网站架构
查看>>
小型电子商务网站设计原则
查看>>
大型Java多用户商城系统设计开发的心得和困难
查看>>
CGLib与JDK的动态代理
查看>>
Java单元测试(Junit+Mock+代码覆盖率)
查看>>
怎样使用 Junit Framework 进行单元测试的编写
查看>>
MAVEN常用命令+基本配置详解 2015
查看>>
java:快速文件分割及合并
查看>>
redis 学习笔记(1)-编译、启动、停止
查看>>
redis 学习笔记(2)-client端示例代码
查看>>
redis 学习笔记(3)-master/slave(主/从模式)
查看>>