Question

J'ai besoin d'un moyen de marquer des photos dans une application de bureau Delphi la façon dont Facebook fait.

Cela inclut un moyen d'ajouter facilement les balises sur le peuple, et en vol stationnaire puis la souris sur la personne sur la photo pour montrer l'étiquette.

Les deux suggestions dans la réponse à: « Composants Identification de visage et Tagging » ne résolvent pas.

Mais je ne sais pas où commencer, et ont été incapables de trouver des idées sur le web sur la façon de le faire. Comment faire Facebook? Ou peut-être il y a un composant pour Delphi qui lui permettra.

Quelle serait la meilleure façon d'essayer de mettre en œuvre le marquage Facebook-like?


p.s. Ceci est une partie de la définition de l'API Facebook pour cela: http: //wiki.developers. facebook.com/index.php/Photos.addTag

Voici un programme Java qui implémente le visage tagging fonctionnalité que je veux faire dans mon application Delphi: fb-photo-Uploader

Était-ce utile?

La solution

Les paramètres clés de l'API que vous avez cité sont l'ID d'image, les coordonnées et l'étiquette. La balise peut être l'ID utilisateur d'un utilisateur Facebook, ou il peut être texte libre (pour le cas où le sujet est étiquetée pas un utilisateur Facebook). Facebook utilise seulement une coordonnée, car il utilise des régions de taille fixe pour désigner une zone marquée; l'idée est que vous cliquez sur le centre du visage d'une personne et Facebook juste mémorisera ce point.

Si vous affichez une image dans un contrôle TImage (qui est le premier choix évident, après tout), vous pouvez détecter les clics de souris avec les événements OnMouseDown et OnMouseUp. (L'événement est OnClick plus simple, mais ne vous dit pas les coordonnées.) Une fois que vous avez acquis un point, pour une étiquette invite à accompagner ce point. Vous pouvez utiliser des étiquettes prédéterminées, comme les ID utilisateur de Facebook, ou tout simplement utiliser du texte ordinaire, ou utiliser quelque chose de votre propre conception. La question de ce que vous utilisez pour représenter une valeur d'étiquette est orthogonale à toute autre question que vous avez demandé à ce jour.

L'autre moitié du marquage de photos de Facebook est que le déplacement de la souris sur l'image affiche le texte de l'étiquette sur l'image, et en déplaçant la souris sur les vignettes ci-dessous mettent en évidence les régions associées. Gérer les événements de OnMouseMove et écrire du code pour afficher ou masquer les étiquettes et les formes, selon le cas. Si vous utilisez TLabel et TShape, vous pourriez même pas modifier l'image, mais montrant les commandes au-dessus de l'image peut interférer avec les événements OnMouseMove supplémentaires pour l'image. Il ne devrait pas prendre trop de temps pour essayer des expériences et voir ce qui fonctionne pour vous.

Autres conseils

lkessler, je viens de lire votre réponse à Marshall Fryman, donc peut-être un couple d'options pour vous:

THotSpotImage - Si vous avez déjà des composants TMS .. .

IMAGEEN - au cas où vous les avez déjà .. .

Voir réponse W2M # 3 Je pense que dans plus je dois obtenir tous les pixels intérieurs de mes sélections, donc comment je peux enregistrer mes sélections / objets?

  

Enregistrer sélection enregistre seulement la sélection elle-même. Il ne sauve pas l'image   à l'intérieur de la sélection:

     Procédure SaveSelectionToFile (const FileName: string)

;   SaveSelectionToFile enregistre la sélection en cours dans le fichier spécifié.   Exemple   ImageEnView1.Select (10,10,100,100);   ImageEnView1.SaveSelectionToFile ( 'selection1');   ..   sel1.Position: = 0;   ImageEnView1.LoadSelectionFromFile ( 'selection1'); // c'est comme   Sélectionnez (10,10,100,100)

Je suis un peu confus quant à votre question. Essayez-vous d'interagir avec Facebook ou tout simplement copier la fonctionnalité?

Si vous essayez de copier la fonctionnalité: Vous devriez être en mesure d'afficher uniquement l'image, permet à l'utilisateur de sélectionner le rectangle, peut-être copier l'image dans une nouvelle copie pour notifier à l'autre personne, et appliquer une étiquette dans un DB. Quelques liens utiles: est un exemple d'image et sélectionnez ici est l'exemple partie d'image de copie. Je pense réellement que vous pourriez faire l'image de sélection dans une boîte de couleurs mais n'ont pas réellement joué avec l'un de ceux pour toujours.

Si vous essayez d'accéder à l'API: L'interface .NET peut travailler pour vous. D'après ce que je peux dire, il n'y a pas d'interface COM de sorte que vous devriez écrire votre propre connecteur ou utiliser une application Delphi .NET. Note: toutes ces informations est en provenance de Google, donc je ne vais pas jurer haut et en bas qu'il est vraiment l'état actuel des choses. La seule autre demande de l'API Facebook, j'ai vu était de 2007.

Si vous voulez faire la reconnaissance automatique du visage, OpenCV de la question référencée ressemble à une manière décente de le faire (surtout si vous avez accès à C ++ Builder).

Dans le Graphic32 bibliothèque , vous pouvez avoir plusieurs couches sur l'autre dans une image. L'une des couches qui est fourni sur la surface, est une TRubberbandLayer qui permet à l'utilisateur de repositionner / redimensionner la couche lors de l'exécution.

L'événement mousemove pour le composant TImage32, a un paramètre qui donne la couche actuellement sous le curseur.

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

Une combinaison de rubberbandlayers et le mousemove événement devrait être une bonne solution, je pense.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top