Как разместить изображение на сервере с помощью urlread () в MATLAB - PullRequest
2 голосов
/ 29 февраля 2012

Я хочу использовать API распознавания лиц face.com (отправить изображение на сервер и получить результат в виде строки XML).

Я использую 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'}) 

Ответы [ 3 ]

2 голосов
/ 29 февраля 2012

К сожалению, вы не можете использовать встроенную функцию urlread. Он использует только application/x-www-form-urlencoded для запросов POST, а для face API требуется multipart/form-data для загрузки файлов JPEG. Вам придется взглянуть на сторонние инструменты

В качестве альтернативы вы можете попробовать написать собственную модифицированную функцию urlread. Однако Matlab не имеет более мелкозернистого доступа, чем urlread. Для решения этой проблемы вы можете использовать Java в Matlab . Документы даже содержат пример URL . По сути, вы можете создавать объекты Java и вызывать их методы в интерпретаторе Matlab. Вот пример Java внутри Matlab:

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'

Удачи.

1 голос
/ 29 февраля 2012

Я нашел ответ.Альтернативная реализация urlread () на Файловой бирже .

0 голосов
/ 31 декабря 2015

Mathworks создал webread и webwrite для решения этой проблемы в более новых версиях Matlab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...