Python openCV 画像の平滑化 とnp.ones()

画像の平滑化こちらをやってみた。
NumPy,matplotも知らないことが多い
【Numpy入門 np.ones】配列の全要素を1で初期化するones関数の使い方 要素が1の配列を出力。タプルで多元配列も可。2番目の引数は変数型。デフォルトはfloat64型
1
2
3
4
5
6
7
import numpy as np
x = np.ones(5) #array([1., 1., 1., 1., 1.])
x2 = np.ones((4,3))
 #[[1. 1. 1.]
 #[1. 1. 1.]
 #[1. 1. 1.]
 #[1. 1. 1.]]

NumPyのarange, linspaceの使い方(連番や等差数列を生成)
np.arange(初期値、終了値、ステップ)ステップは実数も可 NumPyで連番や等差数列(等間隔の配列ndarray)を生成するにはnumpy.arange()かnumpy.linspace()を使う。
arange()は間隔(公差)を指定、linspace()は要素数を指定という違いがあるので、目的によって使い分ける。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
 
print(np.arange(3))
# [0 1 2]
 
print(np.arange(3, 10))
# [3 4 5 6 7 8 9]
 
print(np.arange(3, 10, 2))
# [3 5 7 9]
 
print(np.arange(0.3, 1.0, 0.2))
# [0.3 0.5 0.7 0.9]
 
print(np.arange(-3, 3))
# [-3 -2 -1  0  1  2]
 
print(np.arange(10, 3))
# []
 
print(np.arange(10, 3, -2))
# [10  8  6  4]

numpy.linspace()も等差数列を生成するが、間隔(公差)ではなく要素数を指定する。
第一引数startに最初の値、第二引数stopに最後の値、第三引数numに要素数を指定する。それらに応じた間隔(公差)が自動的に算出される。
1
2
3
4
5
6
7
8
9
10
import numpy as np
 
print(np.linspace(0, 10, 3))
# [ 0.  5. 10.]
 
print(np.linspace(0, 10, 4))
# [ 0.          3.33333333  6.66666667 10.        ]
 
print(np.linspace(0, 10, 5))
# [ 0.   2.5  5.   7.5 10. ]

スライス[::-1]で逆順
1
2
print(np.arange(3, 10, 2)[::-1])
# [9 7 5 3]

resharp()で多次元配列に変換
1
2
3
4
5
6
7
8
9
10
11
12
13
print(np.arange(12).reshape(3, 4))
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
 
print(np.arange(24).reshape(2, 3, 4))
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]

今日実行したもの
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2
import numpy as np
from matplotlib import pyplot as plt
 
img = cv2.imread('opencv.png')
 
kernel = np.ones((5,5),np.float32)/25
 
print(kernel)
 
dst = cv2.filter2D(img,-1,kernel)
 
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Avrraging')
plt.xticks([]),plt.yticks([])
plt.show()

コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

VB.net Dictionaryクラスの初期化