Delphi: Comment marquer des photos comme Facebook ne

voix
0

Je 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 Delphi pour le visage Identification 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?


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

Voici un programme Java qui implémente la fonctionnalité de marquage du visage que je veux faire dans mon application Delphi: fb-photo-Uploader

Créé 01/04/2009 à 01:02
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
0

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 pouvoir 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: ici 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).

Créé 01/04/2009 à 02:34
source utilisateur

voix
4

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 TImagecontrôle (qui est le premier choix évident, après tout), vous pouvez détecter les clics de souris avec les OnMouseDownet OnMouseUpévénements. (L' OnClickévénement est 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 OnMouseMoveévénements et écrire du code pour afficher ou masquer les étiquettes et les formes , selon le cas. Si vous utilisez TLabelet TShape, vous pourriez même pas modifier l'image, mais montrant les commandes au - dessus de l'image peut interférer avec d' autres OnMouseMoveévénements pour l'image. Il ne devrait pas prendre trop de temps pour essayer des expériences et voir ce qui fonctionne pour vous.

Créé 01/04/2009 à 04:25
source utilisateur

voix
3

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 - dans le cas où vous avez déjà ...

Voir réponse W2M # 3 je pense à plus loin , je dois obtenir tous les pixels intérieurs de mes sélections, alors 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'); // ceci est comme Select (10,10,100,100)

Créé 01/04/2009 à 18:43
source utilisateur

voix
0

Dans la 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 la composante 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.

Créé 02/04/2009 à 08:25
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more