As 10 principais ideias e tópicos de projetos OpenCV empolgantes para calouros e experientes [2022]

Publicados: 2021-05-27

OpenCV ou Open Source Computer Vision Library é um poderoso aprendizado de máquina e biblioteca baseada em IA usada para desenvolver e resolver problemas de visão computacional. A visão computacional inclui treinar um computador para entender e compreender o mundo visual, identificar elementos e responder a eles usando modelos de aprendizado profundo. Hoje, as empresas em todo o mundo o utilizam na manipulação de imagens, processamento, detecção de rosto, reconhecimento de voz, rastreamento de movimento e detecção de objetos.

Empresas como Google, Facebook, Microsoft e Intel já implantam o OpenCV para desenvolver aplicativos de visão computacional. Mark Zuckerberg, em uma entrevista de 2015 , comentou: “Se formos capazes de construir computadores que possam entender o que está em uma imagem e dizer a uma pessoa cega que de outra forma não poderia ver essa imagem, isso também seria incrível”.

Hoje, a tecnologia OpenCV provou ser um avanço para pessoas cegas ou com deficiência visual. Isso permite que eles se familiarizem com um ambiente desconhecido e reconheçam objetos e pessoas próximas para superar essa deficiência visual. A visão computacional também é a tecnologia por trás dos carros autônomos e dispositivos inteligentes de sensores de movimento.

Se você está de olho em uma carreira em visão computacional, aqui estão dez projetos interessantes de currículo aberto para ajudá-lo a ganhar experiência no mundo real. Então vamos começar!

Índice

Os 10 principais projetos de currículo aberto para conferir em 2022

Projeto 1: Detectando Pneumonia usando EdgeML

Este projeto OpenCV visa implantar um software de detecção de pneumonia baseado em IA em seu Raspberry Pi. Ele usa o sistema Edge Machine Learning para converter um Raspberry Pi com uma câmera em um classificador de pneumonia usando os multicontêineres da Balena.

Um segundo contêiner é adicionado ao Balena que executa o mecanismo de inferência Edge Impulse WebAssembly em um servidor Node.js. Ambos os contêineres se comunicam por meio de WebSockets para permitir que o BalenaCam transmita ao vivo cada segundo do feed de sua câmera na página da web.

Os softwares e ferramentas empregados no projeto incluem OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code e Docker. Os navegadores da Web que suportam Balena Cam são Chrome, Safari, Firefox e Edge.

Você pode conferir o projeto aqui .

Projeto 2: Sensor de movimento alimentado por OpenCV para SmartThings da Samsung

Primeiro, você precisa de um Raspberry Pi 3 com um PiCam funcional que tenha o OpenCV instalado anteriormente. Este projeto visa criar um Sensor de Movimento personalizado para SmartThings alimentado por visão computacional e detectar rostos. Os dados coletados são enviados para SmartThings over LAN – UPnP.

Para isso, criamos um manipulador de dispositivos para SmartThings e o programamos. Em seguida, usamos um script Python para acessar imagens da câmera e detectar rostos e emparelhar o Raspberry Pi a ser descoberto pelo SmartThings. Você também precisa instalar imutils que você pode obter do GitHub.

Confira aqui o código fonte do projeto .

Projeto 3: Fotografia Computacional

Este projeto consiste em criar panoramas, eliminar ruídos e objetos indesejados das imagens e aumentar a visibilidade das fotografias clicadas com pouca luz. A fotografia computacional envolve algoritmos de remoção de ruídos de fotos para remover ruído branco e distorção gaussiana, restauração de fotos para filtrar linhas, objetos e elementos indesejados e reconhecimento de placas para detectar a placa reconhecendo caracteres.

Projeto 4: Crie uma marca d'água em imagens usando o OpenCV

Este projeto é um tutorial sobre como você pode criar uma marca d'água — assinatura, logotipo ou carimbo d'água para evitar uso indevido ou violação de direitos autorais — em uma imagem usando a biblioteca de visão computacional aberta. Ele permite que você marque uma imagem original usando imagem e texto usando a biblioteca OpenCV do Python. Para criar uma marca d'água usando uma imagem, você precisa definir a função transparente e a função de adição de imagem. No caso de texto, importamos a função PIL e depois ajustamos a posição da marca d'água do texto.

Você pode consultar o projeto aqui .

Projeto 5: Encontrando Wally

Este é um projeto de detecção de objetos para detectar Waldo em uma imagem treinando uma IA para reconhecer Waldo a partir de uma série de imagens diferentes. Em seguida, empregamos uma abordagem estática para encontrar Waldo por correspondência de pixels. Isso é importante porque se você usar uma imagem de modelo, a correspondência estática será aplicada apenas a essa imagem específica e não a uma nova imagem de Wally.

Calculamos o coeficiente de correlação para realizar a correspondência de modelos, que toma como entrada o modelo Waldo e o desliza pixel a pixel pela imagem na qual Waldo deve ser detectado. O coeficiente de correlação mostra se as localizações dos pixels são uma correspondência “boa” ou “ruim”.

Você pode conferir o projeto aqui .

Projeto 6: Carros autônomos

Este projeto emprega manipulação e processamento de imagens usando OpenCV para criar carros autônomos. Para treinar um carro para dirigir sozinho, precisamos familiarizá-lo com as vias, encontrá-las e focar em permanecer nelas. Isso significa que um modelo de aprendizado de máquina requer experiência na identificação da região de interesse pela detecção inteligente de bordas e transformação de linhas de hough para separar os pixels de uma imagem que representa pistas de rua. Isso também requer mascaramento e cálculo de pontos médios de inclinação.

Aqui está o código-fonte para identificar a região de interesse:

importar numpy como np

de matplotlib importar pyplot como plt

imagem = cv2.imread('../../images/input.jpg')

Em [8]:

forma.imagem

Fora[8]:

(830, 1245, 3)

Em [11]:

x, y = imagem.forma[:2]

Em [3]:

altura, largura = imagem.forma[:2]

# Para obter as coordenadas de pixel iniciais (canto superior esquerdo do retângulo de corte)

linha_inicial, coluna_inicial = int(altura * .25), int(largura * .25)

# Para obter as coordenadas de pixel final (canto inferior direito)

end_row, end_col = int(height * .75), int(width * .75)

# Usando indexação para cortar a seção da imagem que desejamos

cortada = imagem[start_row:end_row , start_col:end_col]

Em [6]:

linha, coluna = 1, 2

fig, axs = plt.subplots(linha, col, figsize=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB))

axs[0].set_title('Imagem Original')

cv2.imwrite('original_image.png', imagem)

axs[1].imshow(cv2.cvtColor(cortado, cv2.COLOR_BGR2RGB))

axs[1].set_title('Imagem cortada')

cv2.imwrite('cropped_image.png', recortado)

plt.show()

Confira o projeto aqui .

Projeto 7: Reconhecimento de Face e Voz para Deficientes Visuais

Este projeto visa ajudar pessoas com deficiência visual convertendo entrada de rosto em saída de voz usando um Raspberry Pi 2 Model B e um Raspberry Pi Camera Module. É um dos projetos de currículo aberto mais populares em 2022. O software permite que pessoas cegas ou com deficiência visual detectem sinais, textos ou pessoas em um ambiente desconhecido, naveguem sem assistência. Entre outros requisitos para o projeto estão o OpenCV e o Python para realizar o reconhecimento facial, e o reconhecimento de voz é obtido usando o GNU Octave.

Você pode conferir o código aqui .

Projeto 8: Modelo de Atendimento Inteligente

Um sistema de atendimento inteligente é uma ferramenta útil para modelos de educação online como o ZoomApp. Ele ajuda você a acompanhar os alunos que frequentam sua aula no Zoom, monitorando a frequência deles em tempo real. Tudo o que precisa ser feito é obter uma captura de tela do aluno com a data incluída e enviá-la para um arquivo do Excel.

Você pode encontrar um tutorial para este projeto de cv aberto aqui .

Projeto 9: Troca de rosto com OpenCV

Aplicativos e filtros de troca de rosto estão em alta nas mídias sociais há algum tempo. De parecer jovem e velho a converter imagens estáticas em imagens em movimento, os gostos do Instagram, Snapchat e FaceApp pularam no movimento. Aplicativos de troca de rosto são relativamente fáceis de criar usando OpenCV e Python.

As etapas incluem colocar uma imagem de origem em uma imagem de destino com a ajuda de um triângulo formado usando o detector de pontos de referência dlib.

Confira o projeto aqui .

Projeto 10: Detectando Contornos e Contando Formas

O projeto detecta os contornos ou contornos de uma determinada forma para determinar o tipo de forma que um objeto possui. Por exemplo, se uma imagem tiver tampas de garrafa, você pode usar a forma redonda para determinar quantas tampas de garrafa há na imagem.

Aqui está o código-fonte para fazer isso:

importar numpy como np

de matplotlib importar pyplot como plt

Em 2]:

imagem = cv2.imread('../../images/bottlecaps.jpg')

cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(cinza, cv2.COLOR_BGR2RGB))

plt.title('tampinhas'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', cinza)

Fora[2]:

Verdadeiro

Em [3]:

blur = cv2.medianBlur(cinza, 5)

círculos = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT, 1.5, 10)

para i em círculos[0,:]:

# desenha o círculo externo

cv2.circle(imagem,(i[0], i[1]), i[2], (255, 0, 0), 2)

#desenha o centro do círculo

cv2.circle(imagem, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB))

plt.title('Círculos Detectados'); plt.show()

cv2.imwrite('detected_circles.jpg', imagem)

Fora[3]:

Verdadeiro

Dentro [ ]:

Por outro lado, a contagem de formas envolve a aplicação de algoritmos para segmentar imagens e dados de cluster para determinar pontos de interesse em uma imagem. Usamos contornos binários e aproximados com a ajuda da função approxPolyDP.

Você pode conferir este projeto de cv aberto aqui .

Pensamentos finais

O Computer Vision permite desenvolver uma ampla gama de aplicações úteis, como transformação de imagem, tradução, detecção de contorno, segmentação de imagem, detecção de objeto, rastreamento de objeto e análise de movimento.

Também é usado em Realidade Aumentada (RA) aprendendo a localizar rostos, detectar formas, etc., para reconhecer objetos e rostos. Você também pode criar projetos interessantes de Open CV usando aprendizado de máquina simples, como um leitor de cartão de crédito, detector de dígitos manuscritos ou leitor de rosto.

No entanto, isso requer uma compreensão de ciência de dados e aprendizado de máquina, especialmente aprendizado profundo. Se você deseja seguir uma carreira como engenheiro de ML, cientista de dados ou engenheiro de aprendizado profundo, recomendamos adquirir um Programa de certificação avançada em aprendizado de máquina e aprendizado profundo .

Este curso o ajudará a se tornar bem versado nos conceitos de Estatística, Regressão, Algoritmos de Cluster, Redes Neurais, Detecção de Objetos e Reconhecimento de Gestos. Não apenas isso, ele ajudará você a desenvolver experiência em OpenCV, Python, TensorFlow, MySQL, Keras, Excel e NumPy, entre outras ferramentas e bibliotecas de programação, e ajudará a se destacar na multidão.

O que é OpenCV?

OpenCV é uma biblioteca de código aberto para processamento de imagens e visão computacional, mantida pela Intel e agora suportada por uma comunidade de desenvolvedores. Sendo de código aberto, o OpenCV faz uso do poder de toda a comunidade de desenvolvedores. A biblioteca foi projetada para ser otimizada para aplicações em tempo real, como reconhecimento de objetos, vigilância por vídeo, interação homem-máquina, medicina e outros campos relacionados.

O que é detecção de objetos?

A detecção de objetos é o processo de localização de objetos em imagens ou vídeos que não são trivialmente fáceis de detectar. Este problema é geralmente formulado como uma instância de classificação. Dada uma imagem, queremos classificar seus vários objetos (como carros, pedestres e edifícios) juntamente com suas caixas delimitadoras que, por sua vez, nos dariam sua localização. A detecção de objetos é a tarefa de identificar objetos em uma imagem. O objetivo da detecção de objetos é encontrar a localização dos objetos em uma imagem (ou seja, localizá-los) e estimar seu tamanho e forma. A detecção de objetos é um problema desafiador porque os objetos geralmente são parcialmente ocluídos e às vezes têm uma enorme variedade de aparências, bem como deformações não rígidas na imagem.

Qual é o algoritmo de detecção de objetos mais preciso?

Existem muitos algoritmos de detecção de objetos e nenhum deles é 100% preciso. Algoritmos de detecção de objetos enfrentam problemas de overfitting de dados. De fato, alguns pesquisadores de visão computacional afirmam que os algoritmos de detecção de objetos não podem ser 100% precisos. Mas, existem muitos algoritmos que fornecem resultados precisos para um determinado conjunto de dados. Se você puder comprar uma máquina GPU, sugerimos que você use a implementação SVM baseada em OpenCV para detecção de objetos. É muito preciso, rápido e funciona em um conjunto de dados muito grande. No entanto, não lida muito bem com a oclusão. Se você quiser construir um detector de rosto, vá para a implementação do classificador em cascata Haar no OpenCV.