[英]SIFT using Python 3.4
我在naconda 2.3.0中使用Python 3.4在MacOS中嘗試SIFT,但是在執行我的代碼時始終找不到命令。 包含了Vlfeat 0.9.20 sift和lib文件,但不知道出了什么問題。 我的代碼如下:
from PIL import Image
from numpy import *
from pylab import *
import os
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)
並且來自編譯器的錯誤是:
sh: sifttmp.pgm--output=IMG0232.sift--edge-thresh: command not found
它無法傳輸到功能文件並崩潰
我從互聯網上咨詢過,並嘗試了一些修改,但仍然無法正常工作。 從Python2.X到3.X還有其他轉換嗎? 謝謝
據我所知,SIFT comand line工具稱為sift
。 但是由於錯誤的字符串操作,最終命令不包含必需的空格,因此它顯然是sifttmp.pgm--output=IMG0232.sift--edge-thresh
。
更換
cmmd = str("sift" + imagename + "--output=" + resultname+ "" +params)
與
cmmd = "sift {} --output={} {}".format(imagename, resultname, params)
上面的內容更清晰易讀,將包含當前代碼中缺少的空格。 可能是sift
可執行文件不在路徑中,然后您可能必須為其提供完整的(絕對)路徑。 例如,如果您在目錄/User/foo/Applications/
中進行了sift
:
cmmd = "/User/foo/Applications/sift {} --output={} {}".format(imagename, resultname, params)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.