[RESOLVIDO] Detectar imagem dentro de outra imagem e Descobrir sua localização

Olá pessoal!
Preciso de vossa ajuda novamente. :smiley:

Estou tentando criar um “auto-jogo” (conhecido como bot, entre jogadores online) para fins acadêmicos.
O jogo “alvo” é feito em flash e é bem básico, há jogadores, um campo de futebol, goleiras e uma bola.

Basicamente, o que eu quero fazer é que o meu “personagem” siga a bola e chute-a. Com o tempo, aperfeiçoarei o programa, mas só isso já seria bom.
Até agora, estou a pensar assim:

Há uma classe Robot e um loop.
Este loop capturará uma imagem na tela do jogador. Até aí, está bem fácil e eu conseguira fazer.
O problema, é que nesta imagem (que tem a foto do desktop do usuário), preciso capturar a posição da bola e do jogador, para então usar o robô e fazer com que ele siga a bola.

Este jeito, com certeza deixaria o bot bem lento e “lotaria” o HD rapidamente, por tirar uma screenshot a cada “tantos” segundos. Por isso, também peço sugestões para outra idéia.

Não tenho nem idéia de como programar isto. Se alguém puder mostrar-me o caminho, agradeço muito!
Valeu!

E se a sua aplicação capturar a posição da bola (x,y) e direcionar o boot para que ele ante nessa direção e caso ele esteja distante demais, ou outro boot esteja mais próximo a bola, que ele desista da jogada, pois o que esta mais próximo tem mais chances.

Eu estava pensando nisto, mas não tenho idéia de como capturar a posição da bola e/ou direcionar o bot para a posição. hehehe
Se souberes, por favor, não deixe de avisar.

http://opencv.willowgarage.com/wiki/

Procure por OpenCV, “object detection” e “tracking”.

Dê uma olhada neste projeto: http://marvinproject.org

Os tutoriais do OpenCV e do MarvinProject são muito voltados à edição de imagens.
Não percebi muito bem como se detecta a localização duma imagem. Poderiam me explicar?

Abraços

Você leu os assuntos que o entanglement sugeriu? A opencv, além de edição, faz rastreamento.

De qualquer forma, detectar uma imagem dentro de outra não é tão trivial.

No seu caso, como as imagens são digitais, na mesma escala, e nunca serão rotacionadas, a forma mais simples seria detectar através de template matching:

É só processar o screenshot só na memória, sem guarda-lo num arquivo. Se o Robot exige isso, gere um arquivo só e sobrescreva-o.

Valeu pela ajuda. Vou dar uma pesquisada sobre template matching.