Vou explicar como exemplo a GUI do aplicativo Calculadora no Windows. Como esse aplicativo da Calculadora é aberto e focado, preciso encontrar uma maneira de detectar todos os botões. Só posso usar métodos não intrusivos, para que coisas como a identificação do botão estejam fora de questão. Isso me leva ao reconhecimento de imagens. Ou melhor, diga detecção de imagem, porque não quero uma imagem específica, mas um conjunto de imagens que seguem um determinado padrão. Eu sei como posso clicar / clicar com o botão direito do mouse / dbl-click / etc usando uma determinada imagem de botão e reconhecimento de imagem [1]. Não sei como posso fazer o contrário: digitalize a GUI e encontre as áreas que atendem aos requisitos de ser um botão (retângulo, texto / ícone / gráfico marcado etc.). Uma abordagem maior seria detectar itens que não têm a forma de retângulo (por exemplo, ícones na área de trabalho do Windows)
A coisa mais próxima do que eu preciso é detectar rostos em uma imagem. [2] Mas não sei como aplicar isso no meu caso. Para a detecção de rosto humano, vi que centenas de fotos do rosto devem ser usadas na geração em cascata Haar (não sei como eu faria isso com apenas 10 a 15 instantâneos de botão). Se outro tipo de objeto precisar ser detectado como uma maçã, você precisará gerar a cascata Haar para esse objeto novamente usando muitas imagens.
Algum de vocês já tentou detectar botões, itens ou qualquer outra coisa em uma GUI usando apenas a detecção de padrões? Eu só preciso de algo para me dizer "este é um ícone / botão" para que eu possa pegar a região em um instantâneo.
[1] Eu uso o SikuliX com Python para executar ações em determinados padrões.
[2] Vi que isso é feito facilmente usando cascatas OpenCV e Haar (no formato XML). Criar as cacadas Haar requer um pouco de paciência e habilidades.
fonte
Depois de reformular minha pergunta, obtive a resposta que estava procurando. Esse é outro exemplo que você precisa saber o que pedir para receber o que precisa. Aqui está a página: Como posso detectar elementos da GUI usando o opencv? Obrigado pela ajuda!
fonte