Operações Básicas em Imagens

OpenCVBeginner
Pratique Agora

Introdução

Bem-vindo a este tutorial sobre OpenCV-Python! Este tutorial abordará algumas operações básicas em imagens usando a biblioteca OpenCV em Python.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível intermediário com uma taxa de conclusão de 74%. Recebeu uma taxa de avaliações positivas de 95% dos estudantes.

Acessando e Modificando Valores de Pixels

Antes de iniciar este laboratório, os desafiantes precisam abrir o Python Shell no terminal em /home/labex/project

cd /home/labex/project

python3

Primeiramente, vamos começar carregando uma imagem e exibindo-a usando OpenCV:

import cv2

## Carrega uma imagem
image = cv2.imread('image.jpg')

## Exibe a imagem
cv2.imwrite('Original Image.jpg', image)

Para acessar um valor de pixel, simplesmente precisamos fornecer suas coordenadas (x, y) da seguinte forma:

pixel_value = image[y, x]

O valor do pixel é um array contendo os canais de cor (B, G, R). Para modificar um valor de pixel, basta atribuir um novo valor às coordenadas correspondentes.

Aqui está um exemplo para definir o pixel [0:9, 0:9] para vermelho:

for x in range(10):
    for y in range(10):
        image[x, y] = [0, 0, 255]  ## Define o pixel para vermelho


cv2.imwrite('Modified Image.jpg', image)

A imagem original se parece com:

Original image before modification

Imagem após modificar os valores de pixel na faixa de [0:9,0:9]:

Modified pixel values image

Os usuários podem verificar a correção do resultado executando o código abaixo.

Acessando as Propriedades da Imagem

As propriedades da imagem incluem o número de linhas, colunas e canais, bem como o tipo de dados da imagem e o número total de pixels.

Para acessar a forma da imagem (linhas, colunas e canais), use o atributo shape:

height, width, channels = image.shape
print(height, width, channels)

## output
## 360 640 3

Para acessar o número total de pixels, use o atributo size:

total_pixels = image.size
print(total_pixels)

## output
## 691200

Para acessar o tipo de dados da imagem, use o atributo dtype:

image_dtype = image.dtype
print(image_dtype)

## output
## uint8

Definindo uma Região de Interesse (ROI)

Uma Região de Interesse (ROI) é uma sub-imagem que podemos extrair da imagem original. Para definir uma ROI, só precisamos fornecer as coordenadas de início e fim.

roi = image[start_y:end_y, start_x:end_x]

Por exemplo, para extrair uma ROI de 100x100 pixels do canto superior esquerdo, podemos fazer o seguinte:

roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)

A imagem gerada ROI.jpg se parece com:

ROI example image

Dividindo e Unindo Imagens

Para dividir uma imagem em seus canais de cor (B, G, R), use a função cv2.split():

b, g, r = cv2.split(image)

Agora podemos exibir os canais individuais usando cv2.imwrite().
Para mesclar os canais de volta em uma única imagem, use a função cv2.merge():

merged_image = cv2.merge((b, g, r))

Por exemplo, para trocar os canais vermelho e azul, podemos fazer o seguinte:

swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)

A imagem gerada Swapped Channels Image.jpg se parece com:

Swapped red and blue channels

Resumo

E é isso! Você aprendeu algumas operações básicas em imagens usando OpenCV-Python. Estes são conceitos importantes para entender ao trabalhar com imagens em aplicações de visão computacional e processamento de imagens. Ao dominar essas operações básicas, você estará no caminho certo para desenvolver algoritmos de processamento de imagem mais avançados.