Tek tek görüntüleri ayıklamak için Picasa API kullanarak otomatik yüz tanıma

0 Cevap php

(A similar question has been asked on superuser for answers related to applications. The question is posted here to gather programmable solutions for the same)

Benim iş yerinde, vesikalık fotoğraf daha sonra tek tek resim içine kesti ve benzersiz bir dosya numaraları ile kaydedilmiş, birlikte taranır. Şu anda biz el seçmek kesilmiş ve resimleri kaydetmek için Paint.net kullanın.

Sample Scanned Document Picasa Screenshot: (from: google image search multiple sources, fairuse)

picasa screenshot

Örneğin için. Picasa 3.8, Görünüm> İnsanlar tıklayarak, tüm yüzleri gösterilir ve ben farklı resimler gibi adlarla otomatik olarak bu resimleri tek tek kaydetmek, onlara isim soruluyor?

Updated

All I want to do is convert the picture above to individual pictures.

Yukarıdaki resimde, ben Picasa 3.8 görüntüleri algılar ve onlara isim isteyip istemediğimi nasıl göstermiştir. Ben yüz tanıma gerek yok, ben sadece yüz tanıma ihtiyacımız var. Picasa bireysel görüntüleri algılar ve rhs onları gösterir. Bu bireysel görüntüler ne gerek vardır. Picasa bireysel yüzleri koordinatlarını içeren onaltılık değerlerini kaydeder. Ini dosyası oluşturur.

These individual faces are what I am interested in If I can have the co-ordinates, I can crop the required images from the picture.

SAMPLE.jpg

sample.jpg

ini contents

 [SAMPLE.jpg]
faces=rect64(c18f4c8ef407851e),d4ff0a020be5c3c0;rect64(534a06d429ae627),dff6163dfd9d4e41;rect64(b9c100fae46b3046),e1059dcf6672a2b3;rect64(7b5105daac3a3cf4),4fc7332c107ffafc;rect64(42a036a27062a6c),ef86c3326c143248;rect64(31f4efe3bd68fd8),90158b3d3b65dc9b;rect64(327904e0614d390d),43cbda6e92fcb63e;rect64(4215507584ae9b8c),15b6a967e857f334;rect64(895d4efeb8b68425),5c4ff70ac70b27d3
backuphash=3660

*The ini file seems to be saving the co-ordinates of the face tags as rect64(534a06d429ae627),dff6163dfd9d4e41 for each tag. Quoting from Picasa Help Site user Technonath says

@oedious wrote:- This is going to be somewhat technical, so hang on. * The number encased in rect64() is a 64-bit hexadecimal number. * Break that up into four 16-bit numbers. * Divide each by the maximum unsigned 16-bit number (65535) and you'll have four numbers between 0 and 1. * The four numbers remaining give you relative coordinates for the face rectangle: (left, top, right, bottom). * If you want to end up with absolute coordinates, multiple the left and right by the image width and the top and bottom by the image height.

Yukarıdaki alıntı rect64 kaplı sayısı hakkında görüşmeler () ne virgülden sonra parantez dışında sayısı hakkında?

I have asked a related question. Answers of which may help you too. http://stackoverflow.com/questions/3892408/get-four-16bit-numbers-from-a-64bit-hex-value

Note: The ini details are the same which picasa generated for the particular image.

Artı soru birden çok kez güncellendi ve yeterince açık olmayabilir.

There are some responses at the Picasa Help site, where I asked the same question One of the answers from that thread to get co-ordinates based on the hex values from the ini file. The following code is in C# from esac from the help site. Can I do the same in PHP?

public static RectangleF GetRectangle(string hashstr)
{
    UInt64 hash = UInt64.Parse(hashstr, System.Globalization.NumberStyles.HexNumber);
    byte[] bytes = BitConverter.GetBytes(hash);

    UInt16 l16 = BitConverter.ToUInt16(bytes, 6);
    UInt16 t16 = BitConverter.ToUInt16(bytes, 4);
    UInt16 r16 = BitConverter.ToUInt16(bytes, 2);
    UInt16 b16 = BitConverter.ToUInt16(bytes, 0);

    float left = l16 / 65535.0F;
    float top = t16 / 65535.0F;
    float right = r16 / 65535.0F;
    float bottom = b16 / 65535.0F;

    return new RectangleF(left, top, right - left, bottom - top);
} 

PHP code trying to 1 ve 0 arasındaki sayılara dönüştürmek 64bit

<?php
$dim = getimagesize("img.jpg");    
$hex64=array();
$b0="c18f4c8ef407851e";
$hex64[]=substr($b0,0,4);
$hex64[]=substr($b0,4,4);
$hex64[]=substr($b0,8,4);
$hex64[]=substr($b0,12,4);
$width=$dim[0];
$height=$dim[1];
foreach($hex64 as $hex16){
$dec=hexdec($hex16);
$divide=65536;
$mod=$dec%$divide;
$result=$dec/$divide;
$cordinate1=$result*$width;
$cordinate2=$result*$height;
echo "Remainder 1 : ".$mod." ; Result 1 :  ".$result."<br/>CO-ORDINATES : <B>".$cordinate1." ".$cordinate2."</B><br/>";
}
?>

The output

Remainder 1 : 49551 ; Result 1 : 0.75608825683594 CO-ORDINATES : 371.99542236328 396.94633483887 Remainder 1 : 19598 ; Result 1 : 0.29904174804688 CO-ORDINATES : 147.12854003906 156.99691772461 Remainder 1 : 62471 ; Result 1 : 0.95323181152344 CO-ORDINATES : 468.99005126953 500.4467010498 Remainder 1 : 34078 ; Result 1 : 0.51998901367188 CO-ORDINATES : 255.83459472656 272.99423217773

Bu yüzden de koordinatlara sahip ve Nirmal @ vardır shown how to crop them. Şimdi bir sonraki adım hex kodları ve dosya adları için Picasa.ini ayrıştırmak ve kod entegre olacaktır. Picasa şu anda bir API (veya Do they?) vasıtasıyla hex kodlarını sağlamaz. Bu durumda olsaydı, her şey daha iyi olurdu.

Bu yüzden bir çözüm yaklaşıyor. Ben herkese ödül lütuf isterdim, hepinize teşekkürler (yapamam, ama korku değil ve temsilcisi bir başak dikkat!)

0 Cevap