1

我无法让 Octave 中的 Vlfeat 计算机视觉库正常工作。我按照 vlfeat 网站http://www.vlfeat.org/install-octave.html上的说明编译它但是当我尝试运行 vl_version 时,octave 给了我这个错误:

>> vl_version verbose
error: invalid use of script /users/myu/downloads/vlfeat-0.9.18/toolbox/misc/vl_version.m in index expression

当我尝试运行一个基本的演示程序时,也会发生同样的事情:

>> vl_demo_sift_basic
error: invalid use of script /users/myu/downloads/vlfeat-0.9.18/toolbox/sift/vl_sift.m in index expression
error: called from:
error:   /Users/myu/Downloads/vlfeat-0.9.18/toolbox/demo/vl_demo_sift_basic.m at line 29, column 6

我正在研究mac os x mavericks。我对 octave 和 mac 很陌生,所以如果这是一个非常基本的问题,我深表歉意。预先感谢您的帮助!:)

更新:这是 vl_demo_sift_basic 代码的第 29 行:(我是图像)

[f,d] = vl_sift(I) ;

我又看了一些,我不确定 MEX 文件是否编译成功——vlfeat 网站说,一旦成功编译 MEX 文件,我应该能够在 toolbox/mex/octave/ 中查找它们,但是我找不到这个目录。

4

1 回答 1

0

这可能是因为 octave 的代码还没有正确编译。/home/anne/setup/vlfeat-0.9.20/toolbox/mex/octave构建过程之后应该有一个文件夹。

首先不要忘记MKOCTFILE变量:

MKOCTFILE=mkoctfile make info | grep -i octave
** Octave support
OCTAVE support enabled (MKOCTFILE found)

否则,你会得到:

make info | grep -i octave                    
** Octave support
OCTAVE support disabled (MKOCTFILE not found)

您将需要安装:

sudo apt-get install liboctave-dev octave-image

导航到目录 build 并从那里运行:

cd VLFEAT_ROOT/toolbox/mex/octave/mexa64
octave

octave:1> vl_version verbose
VLFeat version 0.9.20
Static config: X64, little_endian, GNU C 40901 LP64, POSIX_threads, SSE2, OpenMP
8 CPU(s): GenuineIntel MMX SSE SSE2 SSE3 SSE41 SSE42 AVX
OpenMP: max threads: 8 (library: 8)
Debug: no
SIMD enabled: yes

octave:2> addpath('../../..');
octave:3> vl_setup

然后是这样的:

I=imread('place/some.jpg');
image(I)                                                                        
J = single(rgb2gray(I)) ;                                                       
[f,d] = vl_sift(J, 'edgethresh', 10, 'PeakThresh', 3) ;                         
perm = randperm(size(f,2)) ;                                                    
sel = perm(1:500) ;                                                             
h1 = vl_plotframe(f(:,sel)) ;                                                   
h2 = vl_plotframe(f(:,sel)) ;                                                   
set(h1,'color','k','linewidth',3) ;                                             
set(h2,'color','y','linewidth',2) ;  

虽然最初的问题是通过使用 Matlab 解决的,但我可以想象有人想使用八度。特别是因为该功能不仅需要 Matlab,还需要 Matlab 中的图像处理工具箱(如果您不坚持使用 octave)。

于 2015-02-23T00:51:33.053 回答