Como usar OpenCV no seu projeto
Uma ferramenta poderosa para QA, que com certeza você já conhece

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


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.


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.
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! ;)