Bonjour, Habr! Ceci est une suite du tutoriel sur la bibliothèque opencv en python. Pour ceux qui n'ont pas lu les première et deuxième parties, ici: Partie 1 et Partie 2 , et tout le monde - lecture agréable!

introduction
Dans cette partie, nous examinerons l'arithmétique des images, la division et la fusion des canaux, diverses méthodes de flou.
Arithmétique des images
, , .
, 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
Le flou médian remplace le pixel central de l'image par la médiane de tous les pixels de la région centrale, ce qui rend le flou le plus efficace pour éliminer le bruit de type sel. Pour appliquer ce type de flou, il faut appeler la fonction medianBlur () et y passer deux paramètres: l'image et la taille du noyau:
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)
En conséquence, nous obtenons ce qui suit:

Ceci conclut cette partie. Le code, comme toujours, est disponible sur github . À bientôt:)