Posso analisar um gabarito usando o OpenCV?

Tô pensando em fazer um corretor de provas como projeto de faculdade, gostaria de saber se eu consigo fazer a analise dos gabaritos com visão computacional usando OpenCV. Já fiz pequenos projetos, como detecção e reconhecimento facial e de objetos, mas não sei como usá-lo para reconhecer gabaritos.

Sim. Pode.

Como os gabaritos são imagens bem padronizadas há várias formas de fazer isso.

Uma das que parece simples seria binarizar a imagem e utilizar análise de componentes conectados, com a função cv::findContours. Como os locais pintados devem ser mais ou menos fixos, só testar suas posições já deve resolver…

Você pode analisar o tamanho dos contornos usando a cv::boudingRect.

Lembre-se que funções de contornos podem ser bem combinadas com operações de dilatação ou erosão morfológica. Isso permite que vc elimine, por exemplo, gabaritos não pintados (com erosão) antes de buscar contornos.

E, claro, definir também os ROIs antes de aplicar os algoritmos pode ajudar.

1 curtida

Como faço para testar as posições?

Capturar

1 curtida

Use a cv::boundingRect. Como o gabarito tem posições padronizadas, vc pode fazer um teste de colisão simples para as áreas onde vc espera que as respostas estejam.

Caso vc não tenha um escaneamento tão padrão, o ideal seria procurar por algum outro elemento ou marcador que permite vc descobrir a orientação da página. Pode ser uma logo ou, caso tenha controle sobre o gabarito, insira vc esses marcadores nos cantos da folha.

1 curtida

Segui o passo a passo deste código e funcionou normalmente. Agora vou estudar cada linha para entender melhor e procurar aperfeiçoar para deixar da forma como quero. Obrigado @ViniGodoy.

Está indo mais ou menos na linha do que eu estava descrevendo. Mas é muito bom ter uma boa referência de alguém que já testou e funciona.

Se quiser estudar mais a fundo a OpenCV, esse livro da Packt é bem bacana: https://www.packtpub.com/application-development/learn-opencv-4-building-projects-second-edition

E eu ponho a mão no fogo por pelo menos um dos autores. :wink:

PS: Marquei a resposta ali como solução desse tópico. Da próxima vez, faça vc mesmo a marcação. Isso facilita para pessoas que venham visitar o fórum no futuro.