2014-11-01 5 views
0

Vlfeat.org의 Sift 구현을 사용하고 있습니다. 그것은 기능을 파일에 저장해야하는 다음과 같은 기능을 가지고 있습니다.Vlfeat의 Sift 구현

def process_image(imagename,resultname,params="--edge-thresh 10 --peak-thresh 5"): 
""" process an image and save the results in a file""" 

if imagename[-3:] != 'pgm': 
    #create a pgm file 
    im = Image.open(imagename).convert('L') 
    im.save('tmp.pgm') 
    imagename = 'tmp.pgm' 

cmmd = str("sift "+imagename+" --output="+resultname+ 
      " "+params) 
os.system(cmmd) 
print 'processed', imagename, 'to', resultname 

여기서 "os.system (cmmd)"행이 파일에 결과를 기록하는 방법을 설명합니다.

우분투 컴퓨터에 있는데 터미널에서 "sift"명령을 실행하면 "찾을 수 없음"이라는 결과가 나타납니다. 리눅스에서,이 명령은 어떤 프로세스를 호출하려고합니까? 이 Sift 기능을 파일에 저장해야 나중에 클러스터링을위한 Bag of Words 설명자를 작성할 수 있습니다.

https://github.com/jesolem/PCV/blob/master/PCV/localdescriptors/sift.py에서 유사한 sift 구현은 동일한 행을 사용하여 결과를 파일에 저장합니다.

답변

0

Linux에서이 명령을 호출하는 프로세스는 무엇입니까? (리눅스 64 비트에 대한 bin/glnxa64/sift 참조)

$ ./sift 
Usage: ./sift [options] files ... 

Options include: 
--verbose -v Be verbose 
--help -h  Print this help message 
--output -o  Specify output file 
... 

당신은 vlfeat download page의 이진 배포판을 사용 할 수 있습니다, 또는 직접 :

vlfeat에서 제공하는 명령 줄 도구를 의미

(vlfeat/src/sift.c 참조) repo을 복제하고 소스에서 컴파일하십시오.

cmmd = str("/path/to/sift " ...)으로 경로를 조정하거나 /usr/local/bin과 같은 일반적인 경로로 설치 (= 복사)해야합니다.

+0

고맙습니다 ...! 이것은 효과가 있었다. 시스템 경로에 sift 경로를 추가하여 코드에서 경로를 조정해야합니다. 그러나 이것은 터미널에서 작동하지만 Pydev는이 경로 변경을 수행하지 않고 있으며 코드에서 경로를 변경해야합니다. – Erdnase