OpenCV em Python. Parte 3

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:)








All Articles