Como usar OpenCV no seu projeto

Uma ferramenta poderosa para QA, que com certeza você já conhece

Aparecido Ferreira
Jul 24 · 5 min read
Image for post
Image for post

No post de hoje vamos conversar sobre uma ferramenta muito poderosa que você pode usar na parte de qualidade dos seus projetos, mas que com certeza já utiliza no seu dia-a-dia: a OpenCV. E aí você deve estar se perguntando: “Esse cara é doido… Como assim já utilizamos essa tal de OpenCV?”

Pois é, meus amigos leitores, usamos essa ferramenta sim, mas com um nome diferente. Mas antes de começar a falar efetivamente sobre como e onde usar a OpenCV, dá uma olhada neste post do Danilo Policarpo, no qual você pode encontrar um passo a passo para instalação da ferramenta.

Agora sim… O que é OpenCV?

Image for post

A OpenCV, também chamada de Open Source Computer Vision Library, é uma biblioteca de software de visão computacional e aprendizado de máquina em código aberto, construída para fornecer uma infraestrutura comum para aplicativos de visão computacional.

Onde podemos utilizar?

Quem tem iPhone conhece a OpenCV como Face ID. Já para quem tem Android é o desbloqueio facial. E aí você pergunta: “O quê? Não pode ser! Como assim o Face Id e desbloqueio facial são OpenCV?” Calma, que vou explicar melhor.

Quando alguém usa o Face Id pela primeira vez, ele tira uma foto do dono ou da dona do celular e armazena. Assim, toda vez que o dono ou a dona vão desbloquear, ele tirar outra foto e compara com a foto armazenada anteriormente. Se for a mesma pessoa, a ferramenta desbloqueia o celular. Se não, apresenta erro. E onde a OpenCV entra nessa?

A biblioteca faz uma análise de ponta a ponta, de pixel a pixel, do que foi construído para o que é esperado. Com ela, pode-se encontrar diferenças que uma pessoa apenas olhando não conseguiria identificar.

Como funciona a OpenCV?

Existem duas opções de visualização de erro. Na opção 1, a diferença é grifada em vermelha, enquanto que a opção 2 mostra apenas a porcentagem de diferença entre o esperado do que foi desenvolvido.

Em um projeto que eu participava aqui na Concrete, nós utilizávamos o Cucumber + Appium + OpenCV. Para fazer a comparação entre o que era esperado para o que foi desenvolvido, colocamos como critério de aceite 99 ou 100% de igualdade. Então, se por acaso a OpenCV identificasse a igualdade de 98.99999999% ela apresentava um erro, o que fazia com que voltássemos para o desenvolvimento. Para fazer a comparação, colocamos o código no step “Então” do Cucumber.

Toda vez que o teste era rodado, ela tirava um Screenshot do que foi construído e comparava com a imagem do UX, que foi batizada de MATRIZ, ou o resultado esperado. Na primeira vez que usamos a OpenCV obtivemos o seguinte resultado:

Image for post
Image for post
Diferenças encontradas com a OpenCV
Image for post
Image for post
Imagem do UX, batizada de MATRIZ

Com isso, chegamos à conclusão que ficaria muito difícil de identificar e entender qual era a diferença com os grifos em vermelho, pois eles geravam uma poluição visual que impossibilitava o entendimento. Como não seria viável esse modo de utilização, passamos a utilizar o resultado em porcentagem.

No exemplo abaixo temos duas imagens. A da esquerda foi desenvolvida pelo UX, enquanto a imagem da direita é um Screenshot tirado pela OpenCV ao encontrar a diferença entre ambas.

Image for post
Image for post
Image for post
Image for post

Entre a imagem da esquerda e a imagem da direita a OpenCV mostrou 93% de compatibilidade. Com isso, o teste não foi aceito e voltou para o desenvolvimento. Mas vamos lá, qual era a diferença entre as imagens?

Com essa ferramenta poderosa conseguimos descobrir as seguintes diferenças entre as imagens: o ícone da lâmpada da esquerda era mais claro do que da direita, a fonte entre elas estava diferente, a centralização dos textos e o tamanho também. Por isso, era impossível seguir para o próximo teste, então o teste quebrou e voltou para o desenvolvimento.

Quais são os benefícios de utilizar a OpenCV ?

De acordo com a minha experiência, com a OpenCV nós temos:

● Detecção rápida de problemas;
● Mais qualidade do código e interface do usuário;
● Redução de regressão;
● Controle de visualizações em diferentes dispositivos (teste de compatibilidade);
● Feedback rápidos;
● Mais interação com UX;
● Acessibilidade (contraste);
● Especificação executável do sistema.

A seguir temos uma demonstração da biblioteca em funcionamento. Lembrando que o funcionamento é o mesmo para ambas as plataformas, tanto Android quanto iOS.

Android
iOS

Veja agora uma simulação de erro, para demonstrar que a OpenCV encontra qualquer alteração, também em ambas as plataformas:

E é isso! Essa foi uma pequena demonstração de como usar a OpenCV em um projeto. Espero que esse post possa estimular a utilização dessa biblioteca no seu projeto e ajude nas suas decisões. Obrigado ao André Azevedo e ao Danilo Policarpo por compartilharem comigo o conhecimento sobre o OpenCV.

E você, quer desenvolver seus conhecimentos aqui no time de Qualidade da Concrete? Dá uma olhada aqui e se cadastre em alguma de nossas vagas. Até a próxima! ;)

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade…

Aparecido Ferreira

Written by

Analista Quality Assurance (QA). Concrete (Part of Accenture) Formado em Engenharia da Computação

Concrete

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Aparecido Ferreira

Written by

Analista Quality Assurance (QA). Concrete (Part of Accenture) Formado em Engenharia da Computação

Concrete

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store