2012-02-29 2 views
2

face.com 얼굴 검색 API (이미지를 서버로 보내고 XML 문자열 결과 얻기)를 사용하고 싶습니다.MATLAB에서 urlread()를 사용하여 서버에 이미지를 게시하는 방법

나는 urlread()을 사용하며 이미지 파일을 업로드 할 수 없습니다.

코드 : MATLAB은 URL로 이미지를 인코딩하려고하기 때문에이 오류를 반환

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}) 

하지만.

참고 : 웹에서 이미지를 사용할 때 파일이 업로드되지 않으므로 작동합니다.

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이 포함되어 있습니다. 기본적으로 자바 객체를 생성하고 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을 생성했습니다.

관련 문제