Pergunta

Eu preciso de uma maneira de fotos tag em uma aplicação desktop Delphi a maneira Facebook faz isso.

Isso inclui alguma forma de facilmente adicionar as tags sobre o povo, e, em seguida, passar o mouse sobre a pessoa na foto para mostrar a tag.

As duas sugestões na resposta dada à: " Delphi Componentes para Face Identificação e Tagging " não resolver isso.

Mas eu não tenho idéia por onde começar, e têm sido incapazes de encontrar idéias na web sobre como fazer isso. Como o Facebook faz isso? Ou talvez haja um componente para Delphi que vai permitir isso.

Qual seria a melhor maneira de tentar implementar Facebook-like marcação?


P.S. Esta é uma das definição API do Facebook para este: http: //wiki.developers. facebook.com/index.php/Photos.addTag

Aqui é um programa Java que implementa a funcionalidade rosto marcação que eu quero fazer em meu aplicativo Delphi: fb-photo-uploader de

Foi útil?

Solução

Os parâmetros-chave da API que você citou são a ID de imagem, as coordenadas, ea tag. A tag pode ser o ID de usuário de um usuário do Facebook, ou pode ser um texto de forma livre (para o caso quando o assunto marcado não é um usuário do Facebook). Facebook usa apenas uma coordenada, pois utiliza regiões de tamanho fixo para denotar uma área marcado; a idéia é que você clique no centro do rosto de uma pessoa, e Facebook apenas lojas que ponto.

Se você exibir uma imagem em um controle TImage (que é a primeira escolha óbvia, afinal), você pode detectar cliques do mouse com os eventos OnMouseDown e OnMouseUp. (O evento OnClick é mais simples, mas não lhe dizer as coordenadas.) Assim que você adquirir um ponto, pronto para uma etiqueta para acompanhar esse ponto. Você pode usar rótulos pré-determinados, como IDs de usuários do Facebook, ou simplesmente usar o texto comum, ou usar algo de sua própria invenção. A questão do que você usa para representar um valor tag é ortogonal a qualquer outro perguntas que você pediu tão longe.

A outra metade da foto marcação do Facebook é que mover o mouse sobre a imagem exibe o texto tag sobre a imagem, e movendo o mouse sobre os rótulos abaixo destaque as regiões associadas. eventos e OnMouseMove punho escrever algum código para rótulos exibir ou ocultar e formas como apropriado. Se você usar TLabel e TShape, você pode até não ter de modificar a imagem, mas mostrando os controles na parte superior da imagem pode interferir com outros eventos OnMouseMove para a imagem. Não deve demorar muito tempo para tentar algumas experiências e ver o que funciona para você.

Outras dicas

lkessler, acabei de ler a sua resposta a Marshall Fryman, por isso pode ter algumas opções para você:

THotSpotImage - Se você já tem componentes TMS .. .

ImageEn - no caso de você já tê-los .. .

da W2M resposta nº 3 i pensar em mais eu preciso obter todas pixels interno de minhas escolhas, por isso, como posso salvar meus seleções / objetos?

Salvar seleção apenas salva a seleção em si. Não salvar a imagem dentro da seleção:

procedimento SaveSelectionToFile (const FileName: string); SaveSelectionToFile salva a seleção atual para o arquivo especificado. Exemplo ImageEnView1.Select (10,10,100,100); ImageEnView1.SaveSelectionToFile ( 'selection1'); .. sel1.Position: = 0; ImageEnView1.LoadSelectionFromFile ( 'selection1'); // isto é como Selecione (10,10,100,100)

Estou um pouco confuso quanto à sua pergunta. Você está tentando interagir com Facebook ou apenas copiar a funcionalidade?

Se você está tentando copiar a funcionalidade: Você deve ser capaz de simplesmente exibir a imagem, permitem que o usuário selecione o retângulo, possivelmente copiar a imagem para uma nova cópia para notificar a outra pessoa com, e aplicar uma tag em um DB. Alguns links úteis: aqui é um seleto exemplo de imagem e aqui é o exemplo cópia parte da imagem. Eu realmente acho que você poderia fazer a imagem selecionada em um paintbox, mas realmente não tenho jogado com um daqueles para sempre.

Se você está tentando acessar a API: A interface .NET pode trabalhar para você. Do que eu posso dizer, não há nenhuma interface COM para que você teria que escrever o seu próprio conector ou usar um aplicativo .NET Delphi. Nota: todas essas informações é proveniente do Google por isso não vou jurar cima e para baixo que ele é realmente o estado atual das coisas. A única outra Facebook API pedido que eu vi foi a partir de 2007.

Se você quer fazer reconhecimento facial automático, OpenCV da questão olhares referenciados como uma maneira decente para fazê-lo (especialmente se você tem acesso a C ++ Builder).

Na Graphic32-biblioteca , você pode ter várias camadas umas sobre as outras em uma imagem. Uma das camadas que é fornecida para fora da caixa, é um TRubberbandLayer que permite ao utilizador para reposicionar / redimensionar a camada no tempo de execução.

O evento mousemove para o TImage32-componente, tem um parâmetro que dá a camada atualmente sob o cursor.

type TImgMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer) of object;

A combinação de rubberbandlayers eo mousemove-evento deve ser boa solução, eu acho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top