Pregunta

Necesito una manera de etiquetar las fotos en una aplicación de escritorio Delphi el camino Facebook lo hace.

Eso incluye alguna forma de agregar fácilmente las etiquetas sobre el pueblo, y luego pasar el mouse sobre la persona en la foto para mostrar la etiqueta.

Las dos sugerencias en la respuesta dada a: " Delphi Componentes para identificación de la cara el etiquetado y " no resuelven esto.

Pero no tengo idea de por dónde empezar, y han sido incapaces de encontrar ideas en la web sobre cómo hacer esto. ¿Cómo Facebook lo hace? O tal vez hay un componente para Delphi que le permita.

¿Cuál sería la mejor manera de tratar de implementar el etiquetado Facebook-como?


p.s. Esto es parte de la definición de la API de Facebook para esto: http: //wiki.developers. facebook.com/index.php/Photos.addTag

Aquí hay un programa Java que implementa la funcionalidad cara etiquetado que quiero hacer en mi aplicación Delphi: fb-foto-Registro

¿Fue útil?

Solución

Los parámetros clave de la API que se citan son el ID de imagen, las coordenadas, y la etiqueta. La etiqueta puede ser el ID de usuario de un usuario de Facebook, o puede ser de forma libre de texto (para el caso cuando el sujeto etiquetado no es un usuario de Facebook). Facebook utiliza una única coordenada, ya que utiliza regiones de tamaño fijo para denotar una zona etiquetada; la idea es que se hace clic en el centro de la cara de una persona, y Facebook acaba de tiendas de ese punto.

Si se visualiza una imagen en un control TImage (que es la primera opción obvia, después de todo), puede detectar los clics del ratón con los eventos OnMouseDown y OnMouseUp. (El evento OnClick es más simple, pero no le dice las coordenadas.) Una vez que haya adquirido un punto, pide una etiqueta para acompañar a ese punto. Puede utilizar las etiquetas predeterminadas, como los ID de usuario de Facebook, o simplemente utilizar el texto ordinario, o usar algo de su propia invención. La cuestión de lo que se utiliza para representar un valor de la etiqueta es ortogonal a cualquier otra pregunta con lo solicitado hasta el momento.

La otra mitad de etiquetado de fotos de Facebook es que al mover el ratón sobre la imagen, muestra el texto de la etiqueta sobre la imagen, y moviendo el ratón sobre las etiquetas a continuación destacan las regiones asociadas. Manejar eventos OnMouseMove y escribir algo de código para mostrar u ocultar las etiquetas y formas según sea apropiado. Si utiliza TLabel y TShape, puede que ni siquiera tiene que modificar la imagen, pero que muestra los controles en la parte superior de la imagen podría interferir con otros eventos OnMouseMove de la imagen. No debe tomar mucho tiempo para probar algunos experimentos y ver lo que funciona para usted.

Otros consejos

lkessler, acabo de leer su respuesta a Marshall Fryman, por lo que puede tener un par de opciones para usted:

THotSpotImage - Si ya tiene componentes TMS .. .

ImageEn - en caso de que ya los tiene .. .

respuesta de W2M # 3 creo que en más puedo recibir todos los píxeles interiores de mis selecciones, por lo ¿Cómo puedo guardar mis selecciones / objetos?

  

Guardar selección simplemente guarda la selección en sí. No guarda la imagen   dentro de la selección:

     

procedimiento SaveSelectionToFile (filename const: string);   SaveSelectionToFile guarda la selección actual en el archivo especificado.   Ejemplo   ImageEnView1.Select (10,10,100,100);   ImageEnView1.SaveSelectionToFile ( 'selection1');   ..   sel1.Position: = 0;   ImageEnView1.LoadSelectionFromFile ( 'selection1'); // esto es como   Seleccionar (10,10,100,100)

Estoy un poco confundido en cuanto a su pregunta. ¿Estás tratando de interactuar con Facebook o simplemente copiar la funcionalidad?

Si están tratando de copiar la funcionalidad: Usted debe ser capaz de simplemente mostrar la imagen, permite al usuario seleccionar el rectángulo, posiblemente copiar la imagen en una nueva copia a notificar a la otra persona con, y aplicar una etiqueta en un DB. Algunos enlaces útiles: aquí es un ejemplo de selección de imagen y aquí es el ejemplo porción de imagen de copia. De hecho, me gustaría que se podría hacer la imagen de selección en una caja de pinturas, pero no haya jugado ya con uno de los de siempre.

Si usted está tratando de acceder a la API: La interfaz .NET puede funcionar para usted. De lo que puedo decir, no hay ninguna interfaz COM por lo que tendría que escribir su propio conector o utilizar una aplicación .NET Delphi. Nota: toda esta información proviene de Google así que no juraré arriba y hacia abajo que es realmente el estado actual de las cosas. La única otra solicitud de API de Facebook que vi fue a partir de 2007.

Si usted quiere hacer el reconocimiento facial automático, OpenCV de la pregunta que se hace referencia se ve como una buena manera de hacerlo (sobre todo si se tiene acceso a C ++ Builder).

En el Graphic32-biblioteca , puede tener varias capas sobre otra en una imagen. Una de las capas que se proporciona fuera de la caja, es una TRubberbandLayer que permite al usuario cambiar la posición de / cambiar el tamaño de la capa en tiempo de ejecución.

El evento mousemove para la TImage32-componente, tiene un parámetro que da la capa actualmente bajo el cursor.

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

Una combinación de rubberbandlayers y la mousemove-evento debe ser buena solución, creo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top