/ / usando cvSetMouseCallback no javacv - java, javacv, iplimage

usando cvSetMouseCallback em javacv - java, javacv, iplimage

Eu sou relativamente novo em programação e tenho sidofazendo algum processamento de imagem usando o javacv, mas estou tendo problemas para encontrar uma coordenada usando um evento de mouse para um iplimage. Eu basicamente quero obter uma coordenada (x, y) de um iplimage usando o botão esquerdo do mouse. Eu ficaria muito grato se alguém pudesse me dar um exemplo básico de como usar essa função. Eu olhei online e todas as coisas que vi foram bastante confusas. Eu sei que os parâmetros são cvSetMouseCallback ("string", on_mouse, null), no entanto não tenho idéia do que on_mouse é.

Respostas:

1 para resposta № 1

Portanto, um trecho de código usando esse método é:

    cvNamedWindow("LKpyr_OpticalFlow", CV_WINDOW_AUTOSIZE);
cvShowImage("LKpyr_OpticalFlow", imgC);
CvMouseCallback on_mouse = new CvMouseCallback() {
@Override
public void call(int event, int x, int y, int flags, com.googlecode.javacpp.Pointer param) {
System.out.println("point = (" + x + ", " + y + ")");
}
};
cvSetMouseCallback("LKpyr_OpticalFlow", on_mouse, null);

cvWaitKey(0);

Para responder a pergunta on_mouse, é simplesmente umcallback do mouse. Em outras palavras, o que acontece quando ocorre um evento de mouse? No código acima, um breve CvMouseCallback foi implementado, substituindo o método de chamada. Nesse código, as coordenadas x e y são exibidas na saída padrão. o código pode ser encontrado aqui para a classe original CvMouseCallback.

Então, como você sabe o que chamou o retorno de chamada? Isso é dado no parâmetro do evento para chamar. A maneira usual de diferenciar é fazer uma instrução switch sobre o evento. Por exemplo, o botão esquerdo corresponde a CV_EVENT_LBUTTONDOWN. Portanto, se você quiser que o botão esquerdo seja impresso, certifique-se de que seja igual à constante acima.