均值滤波器

文章详细介绍了numpy数组的基本信息,如1-D、2-D、3-D数组的创建和属性,以及索引和切片操作。同时,提到了numpy中的升幂运算符**用于逐元素计算。然而,在尝试使用OpenCV进行均值滤波时遇到了图像处理错误,可能是由于空图或尺寸问题导致。
摘要由CSDN通过智能技术生成

一、数组的索引切片(Matrix slice)

详情请见这位大佬的帖子

1. numpy array 基本信息:

import numpy as np
# 1-D数组
z = np.array([1,2,3,4,5])
print(z) # [1 2 3 4 5]
print(z.shape) # 数组的维度,这是一个整数的元组。(5,)
print(z.size) # 5 数组元素的总数。
print(len(z)) # 5
# 2-D数组
y = np.arange(10).reshape(2,5)
print(y) # [[0 1 2 3 4] [5 6 7 8 9]]
print(y.shape) # (2, 5)
print(y.size) # 10 数组元素的总数,这等于 shape 的元素的乘积。
print(len(y)) # 2
# 3-D数组
x = np.arange(30).reshape(2,3,5)
print(x)
#[[[ 0  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 26 27 28 29]]]
print(x.shape) # (2, 3, 5)
print(x.size) # 30 数组元素的总数,这等于 shape 的元素的乘积。
print(len(x)) # 2

2. numpy array 索引:

import numpy as np
# 1-D数组,索引如同列表
z = np.array([1,2,3,4,5])
print(z[3]) # 4 第3+1个,因为第一位索引是0
print(z[1:3]) # [2 3] 从第二个至第三个,因为第一位索引是0,前闭后开区间z[1:3)
print(z[2:]) # [3 4 5] 从第三个至尾
print(z[:-1]) # [1 2 3 4] 从头至倒数第一个(前闭后开)
print(z[:-2]) # [1 2 3 ] 从头至倒数第二个(前闭后开)
print(z[2:-2]) # [3] 从第三个至倒数第二个,前闭后开区间z[2:-2)
# 3-D数组
x = np.arange(30).reshape(3,2,5)
print(x)
'''
[[[ 0  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 26 27 28 29]]]'''
print(x[0]) # [[0 1 2 3 4] [5 6 7 8 9]] 第0个元素
print(x[-2]) # [[10 11 12 13 14][15 16 17 18 19]] 倒数第2个元素
print(x[-1]) # [[20 21 22 23 24] [25 26 27 28 29]] 倒数第1个元素
print(x[0,1]) # [5 6 7 8 9] 取第0个元素的第1行
print(x[2,1]) # [25 26 27 28 29] 取第2个元素的第1行
print(x[0,1,3]) # 8 取第0个元素的第1行的第3个元素
print(x[1:])#从第1个元素开始取
'''
[[[10 11 12 13 14]
  [15 16 17 18 19]]

 [[20 21 22 23 24]
  [25 26 27 28 29]]]'''
print(x[:1]) # [[[0 1 2 3 4] [5 6 7 8 9]]]从第0个元素取到第1个元素(前闭后开)
print(x[:2]) # 从第0个元素取到第2个元素(前闭后开)
"""[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]]

 [[10 11 12 13 14]
  [15 16 17 18 19]]]"""
print(x[:,:,1]) # [[ 1  6] [11 16] [21 26]] 取每个数组的第2个元素
print(x[-1]) # [[20 21 22 23 24] [25 26 27 28 29]]
print(x[:,1]) # [[ 5  6  7  8  9] [15 16 17 18 19] [25 26 27 28 29]] 每个2-D数组的第2行
print(x[:,1,1]) # [ 6 16 26] 每个2-D数组的第2行第2列
print(x[:,1,-1]) # [ 9 19 29] 每个2-D数组的第2行倒数第1个元素

2.1一维索引

import numpy as np
 
arr = np.arange(10)
print(arr)
# 结果: [0 1 2 3 4 5 6 7 8 9]
 
print(arr[2:6])  
# 结果: [2 3 4 5]
 
print(arr[0::2])
# 结果: [0 2 4 6 8]
 
print(arr[-1::-2])
# 结果: [9 7 5 3 1]
 
arr[4] = 15
print(arr)
# 结果: [ 0  1  2  3 15  5  6  7  8  9]

2.2二维索引

方法一:

import numpy as np
 
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print(arr)
# 结果:
# [[ 1  2  3  4  5]
#  [ 4  5  6  7  8]
#  [ 7  8  9 10 11]]
 
print('索引第0行,第3、4列的元素为: ',arr[0,3:5])
# 结果: [4 5] 
 
print('索引第1,2行,第3、4列的元素为: ',arr[1:3,3:5])
# 结果: 
# [[ 7  8] 
#  [10 11]]
 
print('索引中,第3列的所有元素: ',arr[0:,2])
# 结果: [3 6 9]

方法二:

import numpy as np
 
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print(arr)
# 结果:
# [[ 1  2  3  4  5]
#  [ 4  5  6  7  8]
#  [ 7  8  9 10 11]]
 
print(arr[(0,1,2),(1,2,3)])
# 结果: [ 2  6 10] 
 
print(arr[0,1],arr[1,2],arr[2,3])
# 结果: 2  6 10
 
print('第1,2行中的第0,2,3列元素为: ',arr[1:3,(0,2,3)])
# 结果:
# [[ 4  6  7]
#  [ 7  9 10]]

详见这位大佬的帖子

二、numpy中的**

是 Python 中的升幂运算符,因此在 Python 中x2表示“x 平方”——包括 numpy。numpy 中的此类操作总是逐个元素地应用,因此x**2对数组的每个元素x(无论维数如何)进行平方,就像x*2将每个元素加倍,或者x+2将每个元素增加 2(在每种情况下,x适当的不受影响——结果是一个与x!)形状相同的新临时数组。

三、均值滤波

D:\SoftWare\Anaconda\python.exe "D:/intelligent image analysis/make noise.py"
Traceback (most recent call last):
  File "D:/intelligent image analysis/make noise.py", line 101, in <module>
    cv.imwrite('D:/intelligent image analysis/homework/lena_GaussNoise.png', out)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-oduouqig\opencv\modules\imgcodecs\src\loadsave.cpp:753: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'


Process finished with exit code 1

D:\SoftWare\Anaconda\python.exe "D:/intelligent image analysis/make noise.py"
Traceback (most recent call last):
  File "D:/intelligent image analysis/make noise.py", line 87, in <module>
    cv.imshow("src demo", src)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-oduouqig\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值