Olá, Habr! Esta é uma continuação do tutorial sobre a biblioteca opencv em python. Para quem não leu a primeira e a segunda partes, aqui: Parte 1 e Parte 2 , e todos os outros - leitura agradável!

Introdução
Nesta parte, veremos a aritmética de imagens, divisão e fusão de canais, vários métodos de desfoque.
Aritmética de imagem
, , .
, 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
O desfoque mediano substitui o pixel central da imagem com a mediana de todos os pixels na região central, tornando o desfoque mais eficaz na remoção de ruído do tipo sal. Para aplicar este tipo de desfoque, você precisa chamar a função medianBlur () e passar dois parâmetros lá: a imagem e o tamanho do kernel:
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)
Como resultado, temos o seguinte:

Isso conclui esta parte. O código, como sempre, está disponível no github . Te vejo em breve:)