【计算机视觉】【图像处理】图像数字化运算(Numpy)

本文介绍了如何利用Numpy进行图像处理,包括构造二维和三维的ndarray,访问数组中的值,矩阵运算以及图像的数字化。内容涵盖了矩阵的加法、减法、点乘、点除、幂运算、逆矩阵和行列式计算,以及将灰度和彩色图像转化为ndarray的方法。
摘要由CSDN通过智能技术生成

Opencv的Python API是基于Numpy的。Numpy用来存储和处理多维数组,核心struct是ndarray。

关于numpy.array的使用手册详见:numpy.array的详细手册

下面详解了numpy.array接口、numpy.linalg接口、以及灰度图像和彩色图像的矩阵数字化操作。

1.构造ndarray对象

1.1构造二维的ndarray

代码

注:数组内的元素类型可以由zeros函数入参dtypes指定,可选类型有:uint8、int32、float32、float64等

# -*- coding: utf-8 -*-
"""
@author: tom
"""

#ex_opencv_ndarray.py
import numpy
z = numpy.zeros((2,4),numpy.uint8)#构造2×4的零矩阵
print(type(z))
print(z)

执行结果

技巧:可以在"Variable explorer"窗口查看对象的name、tpye、size以及详细内容value。


1.2构造三维的ndarray

构造m×n×k的三维数组时,可以理解为构造m层个n×k二维数组。每个n×k二维数组占一层,一共m层个二维数组,每个二维数组尺寸大小事n×k。

m×n×k三维数组就是一个m层的堆叠数组,每层是一个尺寸大小为n×k的二维数组~~~~~

想象成3D堆叠内存也不错,一共m层,每层内存都是由n×k的内存颗粒组成的二维内存片

代码

# -*- coding: utf-8 -*-
"""
@author: tom
"""

#ex_opencv_ndarray.py
import numpy
a = numpy.array([
                 [[1,2,3,4],[5,6,7,8]],
                 [[11,12,13,14],[15,16,17,18]]
                ], numpy.float16)
print(type(a))
print(a)

结果


1.3ndarray数组的尺寸shape

1.4ndarray数组的元素类型dtype

# -*- coding: utf-8 -*-
"""
@author: tom
"""

#ex_opencv_ndarray.py
import numpy
a = numpy.array([
                 [[1,2,3,4],[5,6,7,8]],
                 [[11,12,13,14],[15,16,17,18]]
                ], numpy.float16)

print(a.shape) #(2, 2, 4)
print(a.dtype) #float16

2访问ndarray中的值

2.1访问二维ndarray中的值

假设有个二维数组a = [[1, 2, 3],[4, 5, 6]]

2.1.1访问第2行第3列的值,a[1,2]

>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6]])
>>> print(a[2,3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 2 is out of bounds for axis 0 with size 2
>>> print(a[1,2])
6
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值