Como posso detectar elementos da GUI usando o opencv?

7

Dada uma captura de tela de um aplicativo, existe alguma maneira de encontrar elementos da GUI desse aplicativo usando apenas opencv? (algo como na imagem) Imagem desejada do Outlook após a detecção do elemento

Tentei brincar de mesclar a imagem e outros efeitos do exemplo coherence.py na pasta de instalação do opencv. Não conseguiu obter um resultado viável.

Alguém já fez isso? Você tem alguma idéia do que eu poderia tentar?

obrigado

(Eu sou iniciante no opencv e no processamento de imagens, por isso não evite explicações óbvias, se possível) :)

Radu Enea
fonte
2
Isso não está em OpenCV, mas ter um olhar para Sikuli.org que tem exatamente o objetivo que você está procurando
Ivo Flipse
Eu sei sobre Sikuli. O que eu precisava era de uma maneira de detectar as áreas de interesse sem tirar uma captura de tela delas com antecedência. A resposta foi a abordagem MSER com inicialização específica. De qualquer forma, obrigado pela dica Sikuli.
Radu Enea
Se posso perguntar o que você estava programando? Cheguei aqui procurando a mesma pergunta. Minha intenção é tornar os elementos clicáveis ​​no teclado quando para aplicativos que não possuem atalhos de teclado definidos. Você trabalhou em algo semelhante?
urza.cc
Não, era para um pequeno projeto de automação de teste de interface do usuário. Era para "assistir" o usuário interagir com a interface do usuário e, em seguida, gerar pequenos scripts para reproduzir as ações. Abandonei-o em algum momento devido à falta de confiabilidade de Sikuli a longo prazo. Eu poderia obter imagens dos elementos de interface do usuário, mas Sikuli não conseguiu encontrar todas elas em 100% dos casos (provavelmente eles eram muito pequenos ou muito semelhante a outros elementos)
Radu Enea

Respostas:

9

O extrator MSER do OpenCV ( documentado aqui ) pode ser útil - a caixa delimitadora de grupos MSER locais seria muito parecida com os retângulos verdes em sua maquete.

smokris
fonte
Obrigado. Parece o que estou procurando. Vou tentar um dia desses
Radu Enea
Yap. Eu fiz isso. Eu só tenho que ajustá-lo agora para o que eu preciso. Obrigado novamente.
Radu Enea