我想使用XML人脸检测API (将图像发送到服务器,然后返回face.com字符串结果)。
我使用urlread(),它不能上传图像文件。
代码:
fid = fopen('T000.jpg');
im = fread(fid,Inf,'*uint8');
fclose(fid);
urlread('http://api.face.com/faces/detect.xml','post',...
{'api_key' , MY_CODE,...
'api_secret' , MY_SECRET,...
'detector' , 'Normal',...
'attributes' , 'all',...
'file' , im}) 但它会返回一个错误,因为MATLAB试图将图像编码为url。
注意:当我在网络上使用图片时,它可以工作(因为没有上传任何文件)。
urlread('http://api.face.com/faces/detect.xml','post',...
{'api_key' , MY_CODE,...
'api_secret' , MY_SECRET,...
'detector' , 'Normal',...
'attributes' , 'all',...
'urls' , 'http://0.tqn.com/d/beauty/1/0/x/3/1/halle_berry_pixie.jpg'}) 发布于 2012-02-29 20:19:39
我找到了答案。urlread() on the File Exchange的替代实现。
发布于 2012-02-29 19:10:47
不幸的是,您不能使用内置函数urlread。它只对POST请求使用application/x-www-form-urlencoded,并且face API需要multipart/form-data才能上传jpeg文件。您将不得不查看第三方工具
或者,您可以尝试编写自己的修改后的urlread函数。然而,Matlab没有比urlread更细粒度的访问。要解决这个问题,可以使用Java within Matlab。这些文档甚至包含一个URL example。基本上,您可以在Matlab解释器中创建Java对象并调用它们的方法。以下是Matlab中的Java示例:
string_builder = java.lang.StringBuilder('Bar'); %new is not used
string_builder.setCharAt(2, 'z');
java_string = string_builder.toString.toLowerCase; %brackets are optional
matlab_char = char(java_string); %matlab_char == 'baz'祝你好运。
发布于 2015-12-31 07:22:48
Mathworks在新版本的Matlab中创建了webread和webwrite来解决这个问题。
https://stackoverflow.com/questions/9496392
复制相似问题