(对于与应用程序相关的答案,已经有一个类似的问题被问及超级用户的问题.问题在此发布,以收集相同的可编程解决方案)

在我的工作地点,护照尺寸的照片被扫描在一起,然后切成单独的图片,并保存与唯一的文件编号.目前我们使用Paint.net手动选择,剪切和保存图片.

扫描文档Picasa截图:
(来自:谷歌图像搜索多个来源,公平)

例如在Picasa 3.8中,点击查看>人,所有的脸都被显示出来,我被要求命名,我可以自动保存这些个人图片,名称不同的图片?

更新

所有我想做的是将上面的图片转换为个人图片.

在上图中,我已经显示了Picasa 3.8如何检测到图像,并提示我将其命名.我不需要脸部识别,我只需要脸部检测. Picasa检测到单个图像,并在RHS上显示它们.这些单独的图像是我需要的. Picasa创建一个.ini文件,它保存包含单个面的坐标的十六进制值.

这些个人面孔是我感兴趣的如果我可以有坐标,我可以从图片中裁剪所需的图像.

SAMPLE.jpg

ini内容

[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

* ini文件似乎正在将脸标签的坐标保存为每个标签的rect64(534a06d429ae627),dff6163dfd9d4e41.
来自Picasa Help Site用户Technonath说

@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.

上面的报价谈到了在rect64()中包含的数字,逗号后的括号内的数字呢?

我问过一个相关的问题.答案也可以帮助你.
Get four 16bit numbers from a 64bit hex value

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

Plus the question has been updated multiple times and may not be clear enough.

在Picasa Help site有一些回应,我问同样的问题
来自该线程的答案之一是根据ini文件中的十六进制值获取坐标.以下代码在C#从esac从帮助网站.我可以在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,right - left,bottom - top);
}

PHP代码尝试将64位转换为1到0之间的数字

<?PHP
$dim = getimagesize("img.jpg");    
$hex64=array();
$b0="c18f4c8ef407851e";
$hex64[]=substr($b0,4);
$hex64[]=substr($b0,4,8,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/>";
}
?>

输出

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

所以我也有坐标,@Nirmal有shown how to crop them.现在接下来的步骤是解析picasa.ini的十六进制代码和文件名,并整合代码. Picasa当前没有通过api(或Do they?)提供十六进制代码.如果是这样,事情会更好.

所以我们正在接近一个解决方案.谢谢大家,我希望我可以奖赏每个人(我不能,但不要害怕,并期待你的代表的一个尖峰)

要回答picasa问题,请参阅picasa论坛上的此回复:
http://www.google.com/support/forum/p/Picasa/thread?tid=36ae553a7b49088e&hl=en

@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,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.

php – 使用Picasa API自动进行脸部检测,以提取单个图像的更多相关文章

  1. swift 下 UNcode字符串 转为中文字符

    顺便一提,1F436这个16进制数,也能直接通过UnicodeScalar转换成字符串,就像下面这样DOGFACE

  2. Swift学习第十三枪-使用Swift开发IOS中蓝牙4.0的开发流程

    前面总结了几篇关于Swift的使用,今天要讲的是关于使用Swift开发IOS中蓝牙4.0的开发流程,我以前只是会搞android的蓝牙开发,最近开始了Swift的学习,作为一个swift爱好者,想把蓝牙4.0的这个装逼神器在swift中使用一下。使用Swift开发IOS中蓝牙4.0的开发流程有如下的几个步骤:建立桥接文件案例的实现1.建立桥接文件1.1在用Swift使用OC中得类文件的时候,需要进行桥接,首先建一个.h的头文件。

  3. 往返Swift数字类型到/从数据

    Swift3倾向于Data而不是[UInt8],我试图找出最有效/惯用的编码/解码方式,将各种数字类型转换为Data对象。有thisanswerforusing[UInt8],但似乎使用各种指针API,我不能在数据上找到。在早期的Swift版本中,你可以通过做函数参数本身是一个变量,这不再支持了。>最后声明符合所有类型,可以安全地转换为数据并返回:这使得转换更加优雅:第二种方法的优点是,您不能无意中执行不安全的转化。缺点是你必须显式列出所有“安全”类型。

  4. 在Swift中将两个字节的UInt8数组转换为UInt16

    使用Swift我想将字节从uint8_t数组转换为整数。“C”示例:Swift尝试:从Swift中的UInt8数组创建UInt16值的正确语法或代码是什么?我对NSData版本感兴趣,并且正在寻找一个不使用临时数组的解决方案。如果你想通过NSData去,那么它将像这样工作:或者:两种变体都假定字节是主机字节顺序。

  5. 如何在swift中将Int16转换为两个UInt8字节

    我有一些二进制数据,将两个字节的值编码为有符号整数.解码这很简单–我可以从这些字节中提取Int16值:编码这是我遇到问题的地方.我的大多数数据规范都要求使用UInt,这很简单,但我无法提取组成Int16的两个字节题如何提取构成Int16值的两个字节你应该使用无符号整数:如果您想将UInt16转换为等效的Int16,那么您可以使用特定的初始化程序:反之亦然:在你的情况下:

  6. Swift 3中的数据MD5

    我正在尝试获取我的数据的MD5哈希值.不幸的是,我已经将框架升级到swift3,而我一直使用的方法现在不起作用.我已经转换了大部分内容,但我无法从数据中获取字节数:CommonCrypto已作为自定义模块导入.问题是我得到’字节’不可用:在CC_MD5上使用withUnsafeBytes(data.bytes,…

  7. 使用Swift从NSData获取数据

    2)文档说这个参数应该是_buffer:UnsafeMutablePointer.那么这是如何工作的呢?为什么我要这样做而不是更原生/托管[Uint8]构造?我想知道UnsafeMutablePointer是否是一个协议,但它是一个结构.大胆地直接读取值,我想也许我可以尝试另一种结构.我有一个6字节的结构,看起来像:哪个实际上有效!但这让我担心结构包装细节?

  8. 如何在Swift中创建打包数据结构?

    我正在将一个项目从Objective-C转换为Swift,我正在使用一个打包的结构来输入通过套接字发送的转换二进制消息:我不确定Swift中最好的方法是什么,我能得到的最接近的近似值是:翻译中丢失了两个重要的细节:没有保证整数类型的比特,并且没有结构打包.我不认为这可以在Swift中表达,但如果是这样,怎么样?

  9. 撤消在Android上授予的Google API权限的位置?

    我在这里使用一些示例代码:http://code.google.com/p/google-api-java-client/source/browse/picasa-android-sample/src/main/java/com/google/api/services/samples/picasa/android/PicasaSample.java?repo=samples我在我的Android应

  10. 如何解码base64字符串并将其转换为pdf / jpg并将其保存在存储中

    谢谢大家=)解决方法你可以试试这个:哪里:>filepath:新文件的路径>base64String:您要转换的base64字符串

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部