Delphi: Hvordan merke bildene slik facebook gjør

stemmer
0

Jeg trenger en måte å tagge bilder i en Delphi desktop program måten Facebook gjør det.

Det inkluderer noen måte å enkelt legge kodene over folket, og deretter holde muse over personen på bildet for å vise koden.

De to forslagene i svaret gitt: Delphi Komponenter for Face Identifikasjon og Tagging ikke løse dette.

Men jeg har ingen anelse om hvor du skal begynne, og har vært ute av stand til å finne ideer på nettet om hvordan du gjør dette. Hvordan Facebook gjør det? Eller kanskje det er en komponent for Delphi som vil tillate det.

Hva ville være den beste måten å prøve å gjennomføre Facebook-lignende tagging?


PS Dette er noen av Facebooks API definisjon for dette: http://wiki.developers.facebook.com/index.php/Photos.addTag

Her er et Java-program som implementerer ansiktet tagging funksjonalitet som jeg ønsker å gjøre i mitt Delphi app: fb-bilde-opplasteren

Publisert på 01/04/2009 klokken 00:02
kilden bruker
På andre språk...                            


4 svar

stemmer
0

Jeg er litt forvirret med hensyn til spørsmålet ditt. Prøver du å samhandle med Facebook eller bare kopiere funksjonaliteten?

Hvis du prøver å kopiere funksjonalitet: Du bør være i stand til å bare vise bildet, la brukeren velge rektangel, muligens kopiere bildet til en ny kopi for å varsle den andre personen med, og bruke en kode i en DB. Noen nyttige linker: her er en utvalgt bilde eksempel og her er kopibildet del eksempel. Jeg vil faktisk tror du kan gjøre det ved å velge bildet i en Paintbox, men har faktisk ikke spilt med en av dem i evig.

Hvis du prøver å få tilgang til API: .NET-grensesnittet kan fungere for deg. Fra hva jeg kan fortelle, er det ingen COM grensesnitt slik at du måtte skrive din egen kontakt eller bruke en .NET Delphi app. Merk: all denne informasjonen kommer fra Google, så jeg vil ikke sverge opp og ned at det er virkelig den nåværende tilstanden av ting. Den eneste andre Facebook API forespørsel jeg så var fra 2007.

Hvis du ønsker å gjøre automatisk ansiktsgjenkjenning, OpenCV fra den refererte spørsmålet ser ut som en anstendig måte å gjøre det (spesielt hvis du har tilgang til C ++ Builder).

Svarte 01/04/2009 kl. 01:34
kilden bruker

stemmer
4

De viktigste parametrene av API du sitert er bilde-ID, koordinatene, og koden. Merket kan være enten bruker-ID-en Facebook-bruker, eller den kan være fri form tekst (for tilfellet når den merkede gjenstand er ikke en bruker Facebook). Facebook bruker bare en koordinat fordi den bruker fast størrelse regioner for å betegne et merket område; tanken er at du klikker på midten av en persons ansikt, og Facebook bare lagrer det punktet.

Hvis du viser et bilde i en TImagekontroll (som er det opplagte førstevalget, tross alt), kan du gjenkjenne museklikk med OnMouseDownog OnMouseUphendelser. (Den OnClickhendelsen er enklere, men ikke fortelle deg koordinatene.) Når du har kjøpt et poeng, be om en etikett til å følge det punktet. Du kan bruke forhåndsdefinerte etiketter, som Facebooks brukeridentiteter, eller bare bruke vanlig tekst, eller bruke noe av din egen devising. Spørsmålet om hva du bruker til å representere et merke verdi er ortogonal til hva andre spørsmål du har spurt så langt.

Den andre halvparten av Facebooks bildemerking er at du beveger musepekeren over bildet viser tag teksten over bildet, og bevege musen over etiketter nedenfor høydepunkt tilhørende regioner. Håndtere OnMouseMovehendelser og skrive litt kode for å vise eller skjule etiketter og former som passer. Hvis du bruker TLabelog TShape, kanskje du ikke engang å endre bildet, men viser de kontrollene på toppen av bildet kan forstyrre med ytterligere OnMouseMovehendelser for bildet. Det bør ikke ta for lang tid å prøve noen eksperimenter og se hva som fungerer for deg.

Svarte 01/04/2009 kl. 03:25
kilden bruker

stemmer
3

lkessler, jeg bare leste svaret ditt til Marshall Fryman, så kan ha et par alternativer for deg:

THotSpotImage - Hvis du allerede har TMS komponenter ...

ImageEn - i tilfelle du allerede har dem ...

Se w2m svar # 3 jeg tror i ytterligere jeg trenger å få alle indre piksler mine valg, så hvordan jeg kan spare mine valg / objekter?

Lagre valget bare sparer utvalget selv. Det betyr ikke lagre bildet innsiden av utvalget:

Fremgangsmåten SaveSelectionToFile (const Filename: string); SaveSelectionToFile lagrer gjeldende utvalg til den angitte filen. Eksempel ImageEnView1.Select (10,10,100,100); ImageEnView1.SaveSelectionToFile ( 'selection1'); .. sel1.Position: = 0; ImageEnView1.LoadSelectionFromFile ( 'selection1'); // dette er som Select (10,10,100,100)

Svarte 01/04/2009 kl. 17:43
kilden bruker

stemmer
0

I Graphic32-bibliotek , kan du ha flere lag på hverandre i et bilde. Et av lagene som er levert ut av boksen, er en TRubberbandLayer som gjør det mulig for brukeren å flytte / endre størrelsen sjiktet under kjøring.

Den mousemove arrangement for den TImage32-komponent, har en parameter som gir sjiktet som er under markøren.

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

En kombinasjon av rubberbandlayers og mousemove-arrangementet bør være god løsning, tror jeg.

Svarte 02/04/2009 kl. 07:25
kilden bruker

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