こんにちは、Habr!これは、Pythonのopencvライブラリに関するチュートリアルの続きです。第1部と第2部をまだ読んでいない人のために、ここで:パート1とパート2、そして他のみんな-楽しい読書!
前書き
このパートでは、画像の演算、チャネルの分割とマージ、さまざまなぼかし方法について説明します。
画像演算
, , .
, RGB , [0,255]. , , 250 30 70 100? , 280 -30 . , RGB , 8- , 280 -30 . , , , :
print("opencv addition: {}".format(cv2.add(np.uint8([250]),
np.uint8([30]))))
print("opencv subtract: {}".format(cv2.subtract(np.uint8([70]),
np.uint8([100]))))
print("numpy addition: {}".format(np.uint8([250]) + np.uint8([30])))
print("numpy subtract: {}".format(np.uint8([70]) - np.uint8([71])))
, opencv add subtract , numpy. :
opencv addition: 255
opencv subtract: 0
numpy addition: 24
numpy subtract: 255
OpenCV , [0,255]. numpy . , 60 255. , 255 0, , 0 ( ) 255.
, RGB , . , ? opencv — split():
image = cv2.imread('rectangles.png')
b, g, r = cv2.split(image)
cv2.imshow('blue', b)
cv2.imshow('green', g)
cv2.imshow('red', r)
. :
. :
, . :
, . , . , , . , .
, , merge(), :
merge_image = cv2.merge([g,b,r])
cv2.imshow('merge_image', merge_image)
cv2.imshow('original', image)
cv2.waitKey(0)
, , , .
— , . opencv : averaging(), gaussian() median().
Averaging
, — , . — , , . , blur(), , :
def averaging_blurring():
image = cv2.imread('girl.jpg')
img_blur_3 = cv2.blur(image, (3, 3))
img_blur_7 = cv2.blur(image, (7, 7))
img_blur_11 = cv2.blur(image, (11, 11))
, :
Gaussian
, , , , , «» . , :
opencv GaussianBlur(), , . 0, opencv , :
def gaussian_blurring():
image = cv2.imread('girl.jpg')
img_blur_3 = cv2.GaussianBlur(image, (3, 3), 0)
img_blur_7 = cv2.GaussianBlur(image, (7, 7), 0)
img_blur_11 = cv2.GaussianBlur(image, (11, 11), 0)
Median
中央値ブラーは、画像の中央ピクセルをコア領域のすべてのピクセルの中央値に置き換え、ソルトスタイルのノイズを除去するのに最も効果的なブラーにします。このタイプのブラーを適用するには、medianBlur()関数を呼び出し、そこに2つのパラメーター(画像とカーネルサイズ)を渡す必要があります。
def median_blurring():
image = cv2.imread('girl.jpg')
img_blur_3 = cv2.medianBlur(image, 3)
img_blur_7 = cv2.medianBlur(image, 7)
img_blur_11 = cv2.medianBlur(image, 11)
その結果、次のようになります。
これでこの部分は終わりです。いつものように、コードはgithubで入手できます。また近いうちにお会いしましょう:)