Delphi: Как помечать фотографии как facebook делает

голоса
0

Мне нужен способ помечать фотографии в настольном приложении Delphi, как Facebook делает это.

Это включает в себя какой-то способ легко добавлять теги над людьми, а затем наведении курсора мыши на человека на фотографии, чтобы показать тег.

Эти два предложения в ответ получили: « Delphi Компоненты для лица и идентификации Tagging » не решить эту проблему.

Но я понятия не имею, с чего начать, и не смогли найти идеи в Интернете о том, как это сделать. Как Facebook это сделать? Или, может быть, есть компонент для Delphi, который позволит.

Что было бы лучшим способом, чтобы попытаться реализовать Facebook-как маркировать?


пс Это некоторые из определения API Facebook, для этого: http://wiki.developers.facebook.com/index.php/Photos.addTag

Вот программа Java , которая реализует функциональную возможности мечения лица , что я хочу сделать в моем приложении Delphi: фб-фото-загрузчик

Задан 01/04/2009 в 01:02
источник пользователем
На других языках...                            


4 ответов

голоса
0

Я немного запутался, на ваш вопрос. Вы пытаетесь взаимодействовать с Facebook или просто скопировать функциональность?

Если вы пытаетесь скопировать функциональные возможности : Вы должны иметь возможность просто отобразить изображение, позволить пользователю выбрать прямоугольник, возможно скопировать изображение в новую копию , чтобы уведомить об этом другого человека с, и применить тег в БД. Некоторые полезны ссылки: здесь есть избранный пример изображения и здесь является копия изображения части примера. Я на самом деле думаю , что вы могли бы сделать выберите изображение в Paintbox , но на самом деле не играл с одним из тех , кто навсегда.

Если вы пытаетесь получить доступ к API: Интерфейс .NET может работать для вас. Из того, что я могу сказать, что нет COM-интерфейса, так что вы должны были бы написать свой собственный разъем или использовать приложение .NET Delphi. Примечание: вся эта информация исходит от Google, так что я не буду ругаться вверх и вниз, что это на самом деле нынешнее состояние вещей. другой запрос только Facebook API, я видел, был с 2007 года.

Если вы хотите сделать автоматическое распознавание лиц, OpenCV из ссылочного вопроса выглядит как достойный способ сделать это (особенно если у вас есть доступ к C ++ Builder).

Ответил 01/04/2009 в 02:34
источник пользователем

голоса
4

Основные параметры API вы цитируемой являются ID фото, координаты, и тег. Тег может быть либо идентификатор пользователя пользователь Facebook, или это может быть текст в свободной форме (для случая, когда меченый объект не пользователь Facebook). Facebook использует только одну координату, поскольку она использует регионы фиксированного размера для обозначения помеченной области; идея заключается в том, что вы нажимаете на центр лица человека, и Facebook просто хранит эту точку.

Если отобразить изображение в TImageконтроле (это очевидно , первый выбор, в конце концов), вы можете обнаружить щелчков мыши с OnMouseDownи OnMouseUpсобытий. (The OnClickсобытие проще, но не говорит вам координаты.) После того, как вы приобрели точку, запросить этикетку , чтобы сопровождать эту точку. Вы можете использовать заранее заданные метки, как идентификаторы пользователей Facebook , или просто использовать обычный текст, или использовать что - то из вашего собственного изобретения. Вопрос о том, что вы используете для представления значения тега ортогональна любых других вопросов вы задаете до сих пор.

Другая половина фото мечения Facebook является то , что перемещение мыши на изображении отображает текст тега над изображением, и перемещая курсор меток ниже выделить соответствующие регионы. Обрабатывать OnMouseMoveсобытия и написать код , чтобы отобразить или скрыть метки и форму в зависимости от обстоятельств. Если вы используете TLabelи TShape, вы не могли бы даже изменить образ, но показывающий те элементы управления на верхней части изображения могут помешать дальнейшим OnMouseMoveсобытиям для изображения. Это не должно занять слишком много времени , чтобы попробовать некоторые эксперименты и посмотреть , что работает для вас.

Ответил 01/04/2009 в 04:25
источник пользователем

голоса
3

lkessler, я только что прочитал ваш ответ на Маршалл Fryman, поэтому, возможно, есть несколько вариантов для вас:

THotSpotImage - Если у вас уже есть компоненты TMS ...

ImageEn - в случае , если у вас уже есть ...

См W2M в ответ # 3 я думаю , в дальнейшем мне нужно получить все внутренние пиксели моего выбора, так как я могу сохранить мой выбор / объекты?

Сохранить выбор только сохраняет сам выбор. Он не сохраняет изображения внутри выбора:

Процедура SaveSelectionToFile (Const имя_файла: строка); SaveSelectionToFile сохраняет текущий выбор для указанного файла. Пример ImageEnView1.Select (10,10,100,100); ImageEnView1.SaveSelectionToFile ( 'Вариант1'); .. sel1.Position: = 0; ImageEnView1.LoadSelectionFromFile ( 'Вариант1'); // это как Select (10,10,100,100)

Ответил 01/04/2009 в 18:43
источник пользователем

голоса
0

В Graphic32-библиотеке , вы можете иметь несколько слоев друг на друга в образе. Один из слоев , что обеспечивается из коробки, является TRubberbandLayer , что позволяет пользователю изменить положение / изменить размер слоя во время выполнения.

Событие MouseMove для TImage32-компонента, имеет параметр, который дает слой, находящийся под курсором.

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

Сочетание rubberbandlayers и MouseMove-событие должно быть хорошим решением, я думаю.

Ответил 02/04/2009 в 08:25
источник пользователем

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