栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python扩展库numpy的简单介绍

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python扩展库numpy的简单介绍

与图像相关的知识。

文章目录

前言一、图像表示二、Numpy相关介绍

1.ndarray对象及常用的属性

(1)ndarray.shape属性(2)ndarray.dtype属性(3)numpy的数据类型(4)ndarray.ndim属性(5)ndarray.size属性 2.Numpy常用的函数1.创建ndarray对象2.ndarray对象的索引以及切片3.ndarray对象生成随机数 总结


前言

要对一张图片进行处理,首先需要获取这张图片。可以使用相机和手机等工具获取一张彩色图片,并且以一种特定的格式保存在自己的磁盘中。所以在处理图像时,需要通过某种方式获取图像,同时以某种类型把它存放在一个容器里,并且展示给用户。


提示:以下是本篇文章正文内容,下面案例可供参考

一、图像表示

数字图像在计算机中是以矩阵形式进行存储的,矩阵中的每一个元素都描述一定的图像信息,如亮度、颜色等信息。数字图像处理就是通过一系列矩阵运算过程从而提取重要信息。在python中,图像被读取进来后,被保存在一个N维数组对象ndarray中,此后的图像处理操作都是依赖于这个多维数组。

二、Numpy相关介绍 1.ndarray对象及常用的属性

ndarray在numpy中可以进行快速数学运算、具有广播能力且节约空间的N维数组对象,可在数组处理中灵活使用。

(1)ndarray.shape属性

这个函数表示数组的维数,返回一个元组,元组的长度即ndim(维度)。此属性可以获取图像的尺寸,对于灰度图像img,img.shape返回的数据(n,m)n表示n行,m表示m列;而对于三通道的彩色图像img0,img0.shape返回的数据(n,m,3),表示3个n行和m列的BGR图像。

(2)ndarray.dtype属性

这个函数的作用是表示数组中元素的数据类型。图像在计算机存储主要由像素矩阵构成,每个像素值的大小决定了图像的质量。如果用8位无符号整数存储16位图像,会造成图像颜色的改变,从而显示错误的图像。

(3)numpy的数据类型
数据类型取值范围C++
uint8 (8位无符号整数)0-255cv-8u
int8 (8位符号整数)-128-127cv-8s
uint16(16位无符号整数)0-65535cv-16u
int16(16位符号整数)-32768-32767cv-16s
int32 (32位符号整数)-2147483648-2147483647cv-32s
float32(32位单精度浮点数)-FLT_MAX-FLT_MAX,INF,NANcv-32F
float64(64位双精度浮点数)-DBL_MAX-DBL_MAX,INF,NANcv-64F
(4)ndarray.ndim属性

函数表示数组的维度。在图像中可以用来表示图像的通道数(channel)。需要注意的是在C++中灰度图的通道数img.channel=1,而在numpy中灰度图像img.channel=2.
在opencv中,通常使用C1、C2、C3、C4分别表示单通道、双通道、三通道以及四通道

(5)ndarray.size属性

函数表示数组元素的总个数,在图像中常用它来计算数组中的像素个数。
在我们使用opencv-python读取一张图片成功后,会分别输出图像的四个属性。

提示结果
图像的形状(480,320,3)
元素类型uint8
图像通道数3
像素总数460800

ndarray.size的作用就是将图像的像素总数进行计算表示,计算的过程,例如BGR色彩图像,图像的尺寸(480,320,3),利用ndarray.size计算得到的结果应该4803203,最终结果为460800.

2.Numpy常用的函数 1.创建ndarray对象

由于在python中导入numpy库时,常常import numpy as np导入,所以程序中np就是表示numpy库,np.array()函数属于numpy库中的一个函数,用于创建一个多维度的array数组。同时还可以利用np.ones()建立一个全为1的矩阵’利用np.zeros()可以建立一个全0矩阵。

2.ndarray对象的索引以及切片

在对图像处理时,常常需要对图像的某一个通道进行操作,此时就需要对ndarray对象进行切片以及索引。例如,img[0,0]可以选择灰度图像img中位于(0,0)位置上的像素;img[x1:x2,y1:y2],可以对图像进行裁剪,其中x1和y1表示图像左上角的坐标,x2和y2表示图像右下角的坐标。使用img[:,:,0]可以获取彩色图像img的蓝色通道,这个方式比opencv中的通道拆分cv.split()函数的效率要高得多。

3.ndarray对象生成随机数

np.random模块中提供了很多种可以生成多种随机数的函数,可以根据需求定义样本区间以及概率分布等。例如,在np.random.randint()函数可以从给定的范围内随机选取整数;np.random.randn()函数可以产生服从均值为0,标准差为1的正态分布的数据。

代码如下(示例):

import numpy as np
import cv2 as cv
if__name__ ==  "__mian__"
	#创建array数组对象,
	#使用np.array ()创建一个5x5、数据类型为float32的对象
	a = np.array([[1,2,3,4,5],
				   [6,7,8,9,10],
				   [11,12,13,14,15],
				   [16,17,18,19,20],
				   [21,22,23,24,25]],dtype='float32')

总结

numpy的使用极大的方便了,开发人员,如果对numpy有较深的理解,可以使得具有数组编程思维的开发人员写出更加高效的代码,在这里也只是简单地介绍一下numpy的相关知识,numpy中还有很多与矩阵有关的函数以及方式还需要我们自己去了解,这个对我们编程具有很大的帮助。其次个人能力有限,文章中有不对的地方,恳请原谅。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号