【发布时间】:2014-03-04 21:00:50
【问题描述】:
我正在尝试从文件夹中读取文件并运行与.py 文件位于同一目录中的colorDescriptor.exe。其实我想,每次它读取一个文件来计算colorDescriptor。
我的代码如下:
import os
from os import listdir
from os.path import isfile, join
mypath1 = "/clothes/"
mypath2 = "/i386-win-vc/"
onlyfiles = [ f for f in listdir(mypath1) if isfile(join(mypath1,f)) ]
image = mypath1+f
os.popen("colorDescriptor image --detector harrislaplace --descriptor sift --output
onlyfiles.txt ")
print image
在终端,使用 colorDescriptor.exe 的语法例如:
colorDescriptor image.jpg --detector harrislaplace --descriptor sift --output onlyfiles.txt
我收到一个错误:
Tue04 10:53:30,248 - [Impala.Persistency.FileSystem ] Unable to find image in path
Tue04 10:53:30,248 - [Impala.Core.Array.ReadFile ] Don't know how to read
Tue04 10:53:30,248 - [Sandbox.koen.mainColorDescriptor ] [ERROR] Could not read input
file: is it really a valid image? image
使用建议的代码进行更改后:
import os
from os import listdir
from os.path import isfile, join
mypath1 = "C:/Documents and Settings/Desktop/clothes/"
mypath2 = "C:/Documents and Settings/My
Documents/colordescriptors40/i386-win-vc/"
onlyfiles = [ f for f in listdir(mypath1) if isfile(join(mypath1,f)) ]
image = mypath1+f
print image
pattern = "colorDescriptor %s --detector harrislaplace --descriptor sift --output
onlyfiles.txt"
os.system(pattern % image)
我现在收到以下内容:
Tue04 11:06:45,091 ERROR [Impala.Persistency.FileSystem ] Unable to find C:/Documents
in
path
Tue04 11:06:45,091 INFO [Impala.Persistency.FileSystem ]
Tue04 11:06:45,091 ERROR [Impala.Core.Array.ReadFile ] Don't know how to read
Tue04 11:06:45,091 ERROR [Sandbox.koen.mainColorDescriptor ] [ERROR] Could not read input
文件:它真的是一个有效的图像吗? C:/文件 【0.1s完成】
【问题讨论】:
-
你有什么错误吗?
-
不,onlyfiles 包含文件夹中的所有文件。从终端 colorDescriptor 的工作方式如下:koen.me/research/colordescriptors/readme
-
请您详细说明您期望的输出?
-
好吧,更清楚一点,似乎 os.popen 没有工作。它什么也没做。我期望的是,一个 txt 文件 onlyfiles.txt 将使用 image.jpg 的颜色描述创建,就像我运行批处理文件时一样。
-
您需要帮助解决什么问题?如果你想在控制台上看到
colorDescriptor的输出,或者如果你想让python 在一个变量中接收它,参见popen文档;或者更好的是,使用subprocess模块。