Python openCV 画像の平滑化 とnp.ones()
画像の平滑化こちらをやってみた。
NumPy,matplotも知らないことが多い
【Numpy入門 np.ones】配列の全要素を1で初期化するones関数の使い方 要素が1の配列を出力。タプルで多元配列も可。2番目の引数は変数型。デフォルトはfloat64型
NumPyのarange, linspaceの使い方(連番や等差数列を生成)
np.arange(初期値、終了値、ステップ)ステップは実数も可 NumPyで連番や等差数列(等間隔の配列ndarray)を生成するにはnumpy.arange()かnumpy.linspace()を使う。
arange()は間隔(公差)を指定、linspace()は要素数を指定という違いがあるので、目的によって使い分ける。
numpy.linspace()も等差数列を生成するが、間隔(公差)ではなく要素数を指定する。
第一引数startに最初の値、第二引数stopに最後の値、第三引数numに要素数を指定する。それらに応じた間隔(公差)が自動的に算出される。
スライス[::-1]で逆順
resharp()で多次元配列に変換
今日実行したもの
NumPy,matplotも知らないことが多い
【Numpy入門 np.ones】配列の全要素を1で初期化するones関数の使い方 要素が1の配列を出力。タプルで多元配列も可。2番目の引数は変数型。デフォルトはfloat64型
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()は要素数を指定という違いがあるので、目的によって使い分ける。
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に要素数を指定する。それらに応じた間隔(公差)が自動的に算出される。
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]で逆順
print(np.arange(3, 10, 2)[::-1]) # [9 7 5 3]
resharp()で多次元配列に変換
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]]]
今日実行したもの
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()
コメント
コメントを投稿