2012-02-29 9 views
2

face.comの顔検出APIを使用したい(画像をサーバに送信し、XML文字列の結果を返す)。MATLABでurlread()を使用してサーバに画像を投稿するには

私は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'}) 
+0

質問の最初の単語を「Hot」から「How」に編集しました。実際にそれが何かをする方法の問題ではなく、あなたが何かをしたいと熱望しているという声明があれば、私は謝罪します。 –

答えて

2

残念ながら、組み込み関数urlreadは使用できません。 POSTリクエストにはapplication/x-www-form-urlencodedしか使用されず、face APIにはmultipart/form-dataが必要です。jpegファイルをアップロードするにはサードパーティのツールを参照する必要があります

また、独自の変更されたurlread関数を記述することもできます。しかし、Matlabには、urlreadより細粒度のアクセスはありません。これを解決するにはJava within Matlabを使用できます。ドキュメントにはURL exampleも含まれています。基本的にJavaオブジェクトを作成し、そのメソッドをMatlabインタプリタで呼び出すことができます。 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' 

最高の運があります。

0

Matlabの新しいバージョンでこれを解決するために、Mathworksがwebreadwebwriteを作成しました。

関連する問題