使用python3.4筛选

2024-09-28 05:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python3.4和naconda2.3.0在MacOS中尝试SIFT,但是在执行代码时总是找不到命令。vlfeat0.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)   

编译器的错误是:

^{pr2}$

它无法传输到功能文件并发生故障

我已经从网上咨询过,尝试过一些修改,但仍然不起作用。从Python2.X到3.X还有其他的转换吗?谢谢


Tags: 文件代码fromimageimportossaveparams
1条回答
网友
1楼 · 发布于 2024-09-28 05:16:06

据我所知,SIFT命令行工具称为sift。但是由于错误的字符串操作,最后一个命令没有包含所需的空格,因此改为sifttmp.pgm output=IMG0232.sift edge-thresh,这显然不存在。在

更换

cmmd = str("sift" + imagename + " output=" + resultname+ "" +params)

^{pr2}$

上面的内容更清晰易读,并将包含当前代码中缺少的空格。 可能是sift可执行文件不在路径上,然后您可能必须给它一个完整(绝对)路径。E、 g.如果目录/User/foo/Applications/中有{}:

 cmmd = "/User/foo/Applications/sift {}  output={} {}".format(imagename, resultname, params)

相关问题 更多 >

    热门问题