簡體   English   中英

使用Python 3.4的SIFT

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM